国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java多線程讀寫文件示例

2019-11-26 15:33:30
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

package com.ysh.file;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

import com.google.common.collect.Lists;

public class WriteQueue {
 private static final int MAX_QUEUE_SIZE = 10000;
 private LinkedList<String> queueCache = Lists.newLinkedList();
 private Lock lock = new ReentrantLock();
 private Condition full = lock.newCondition();
 private Condition empty = lock.newCondition();

 private WriteQueue() {
 }

 private static class WriteQueueHolder {
  private final static WriteQueue INSTANCE = new WriteQueue();
 }

 public static WriteQueue getInstance() {
  return WriteQueueHolder.INSTANCE;
 }

 public void add(String line) {
  lock.lock();
  try {
   while (queueCache.size() >= MAX_QUEUE_SIZE) {
    full.await();
   }
   queueCache.addFirst(line);
   empty.signal();
  } catch (InterruptedException e) {
   e.printStackTrace();
  } finally {
   lock.unlock();
  }
 }

 public void add(List<String> lineList) {
  lock.lock();
  try {
   while (queueCache.size() >= MAX_QUEUE_SIZE) {
    full.await();
   }
   queueCache.addAll(lineList);
   empty.signal();
  } catch (InterruptedException e) {
   e.printStackTrace();
  } finally {
   lock.unlock();
  }
 }

 public ArrayList<String> flush() {
  ArrayList<String> temp = null;
  lock.lock();
  try {
   while (queueCache.size() == 0) {
    empty.await();
   }
   temp = Lists.newArrayList();
   temp.addAll(queueCache);
   queueCache.clear();
   full.signal();
  } catch (InterruptedException e) {
   e.printStackTrace();
  } finally {
   lock.unlock();
  }
  return temp;
 }

}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 双峰县| 苏尼特左旗| 宁德市| 定南县| 城步| 大庆市| 花莲市| 黑龙江省| 安义县| 武穴市| 南康市| 晋中市| 三河市| 宝鸡市| 怀化市| 郧西县| 道真| 蒲江县| 唐山市| 广南县| 颍上县| 鱼台县| 上饶市| 日喀则市| 华安县| 平潭县| 二连浩特市| 大悟县| 西林县| 临洮县| 桐柏县| 南康市| 论坛| 石家庄市| 新余市| 梁平县| 土默特右旗| 宜黄县| 思茅市| 西乌| 漾濞|