时间:2021-05-19
复制代码 代码如下:
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;
}
}
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
这篇文章将向大家展示Java编程利用socket多线程访问服务器文件代码示例,如果您想先了解Java多线程socket编程的基础知识,可以看下这篇文章:Java
Python的多线程在io方面比单线程还是有优势,但是在多线程开发时,少不了对文件的读写操作。在管理多个线程对同一文件的读写操作时,就少不了文件锁了。使用fcn
本文实例讲述了java多线程下载。分享给大家供大家参考,具体如下:使用多线程下载文件可以更快完成文件的下载,多线程下载文件之所以快,是因为其抢占的服务器资源多。
在上篇文章给大家介绍了java多线程的实现方式,通过本文给大家介绍java多线程实例,对java多线程感兴趣的朋友一起学习吧首先给大家说下多线程的优缺点多线程的
本文实例为大家分享了python多线程同步之文件读写控制的具体代码,供大家参考,具体内容如下1、实现文件读写的文件ltz_schedule_times.py#!