我想通过两个线程从同一资源打印非重复元素。
在下面的代码中,正在打印重复的元素
class TestSleepMethod1 extends Thread{
public void run(){
for(int i=1;i<5;i++){
try{Thread.sleep(500);}catch(InterruptedException e){System.out.println(e);}
System.out.println(i);
}
}
public static void main(String args[]){
TestSleepMethod1 t1=new TestSleepMethod1();
TestSleepMethod1 t2=new TestSleepMethod1();
t1.start();
t2.start();
}
}
输出:
1 1 2 2 3 3 4 4 。我希望,如果一个线程打印“1”,其他线程不应再次打印“1”,而应该打印 2 。如何达到这个条件呢? 谢谢。
最佳答案
您可以拥有一个队列(例如:BolockingQueue)并将所有数字添加到其中。然后在添加后通知线程,该线程应该从队列中一一取出值。这将帮助您实现您想要的结果。 请参阅http://tutorials.jenkov.com/java-concurrency/blocking-queues.html
关于java - 如何通过两个线程打印非重复元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29586685/