【发布时间】:2021-12-19 08:37:24
【问题描述】:
ExecutorService executor1 = Executors.newSingleThreadExecutor();
ExecutorService executor2 = Executors.newSingleThreadExecutor();
ExecutorService executor3 = Executors.newSingleThreadExecutor();
ArrayBlockingQueue<String> abq = new ArrayBlockingQueue<String>(1000);
try {
String line;
InputStream is = file.getInputStream();
br = new BufferedReader(new InputStreamReader(is));
while ((line = br.readLine()) != null) {
String[] values = line.split(",");
List<String> valuesList = Arrays.asList(values);
for(String valueList : valuesList) {
abq.put(valueList);
executor2.execute(new Runnable () {
public void run() {
System.out.println(valueList + Thread.currentThread().getName());
}
});
嗨 我正在尝试执行以下操作:
- 从主线程读取文件
- 将读取的值存储到阻塞队列中,另一个线程将从该队列中访问和处理。
- 让另一个线程写入另一个文件。
但我对如何做到这一点感到困惑。 如果我声明一个固定线程池,我将无法控制哪个线程做什么,但是在这种方法中,这不是类似于顺序处理,因为线程属于不同的池吗?
如果有人可以指导我如何做到这一点,那将对我有很大帮助。
【问题讨论】:
标签: java spring file concurrency java.util.concurrent