如何在java多线程中实现上下文切换

时间:2016-01-23 02:28:22

标签: java multithreading

我在一个班级中有两种方法 方法1:将BufferedImage数据写入目录B中的每个文件夹,以便在每个文件夹中有1个图像文件。

BufferedImage Array = ...;
for(int a = 0;a < B.listfiles().length;a++)
   write Arrray[a] to B.listfiles()[a];      

方法2:将已经从B中的每个文件夹创建的数据写入目录C中的每个文件夹

  for(int a = 0;a < C.listfiles().length;a++)
   write B.listfiles()[a] to C.listfiles()[a]

如何实现多线程,以便在将图像写入B中的文件夹之后立即将图像数据传输到C中的文件夹:

write to folder 1 in B
write to folder 1 in C using data just created from folder 1.
write to folder 2 in B
write to folder 2 in C using data just created from folder 2.

2 个答案:

答案 0 :(得分:0)

我会在C中使用由B访问的队列。因此,只要B完成一个文件,就会将其添加到C的队列中以从中拉出并执行其操作。这是最简单的答案。

for (int a = 0; a < B.listfiles().length; a++) {
   write Array[a] to B.listfiles()[a];
   boolean callNotify = C.queuedfiles().isEmpty();
   queue Array[a] to C.queuedfiles();
   if (callNotify) notify();
}

while(true) {
   if (C.queuedfiles().isEmpty()) wait();
   write C.queuedfiles().poll() to C.listfiles()[a];
}

像这样的东西。然后,您需要在C完成后实现终止B的内容

答案 1 :(得分:0)