LinkedTransferQueue实现两个线程之间的数据传递共享,添加和获取实时交替执行
解决方法:
实现线程threadA通过tryTransfer或者transfer方法存放数据到队列LinkedTransferQueue,如果没有其它线程从队列中获取数据,那threadA不会进入阻塞状态,可以继续添加数据到LinkedTransferQueue,这点与SynchronousQueue队列不同。当有线程在等待获取数据,添加数据的时候会马上通知这个等待的线程获取数据。
1.测试类
import java.util.concurrent.LinkedTransferQueue;
public class Test{
public static void main(String[] args) {
try {
LinkedTransferQueue s=new LinkedTransferQueue();
//往LinkedTransferQueue队列获取数据的线程
TestB testB= new TestB(s);
Thread threadB = new Thread(testB);
threadB.start();
Thread.sleep(1000);
//往LinkedTransferQueue队列添加数据的线程
TestA testA = new TestA(s);
Thread threadA = new Thread(testA);
threadA.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
2.线程threadA,往队列里添加数据:http://www.yayihouse.com/yayishuwu/chapter/1950