【发布时间】:2022-01-15 17:09:34
【问题描述】:
我想像这样交替显示这两个线程:
- 线程 1
- 线程 0
- 线程 1
- 线程 0 ...
这是我开始的基本代码,我尝试了 wait() notify() 方法,但我无法得到想要的结果。
class Task extends Thread {
@Override
public void run() {
try {
for(int i = 0; i<10; i++){
double dure = Math.random()*200 ;
sleep((long) dure);
System.out.println(Thread.currentThread().getName());
}
} catch (Exception e) {
}
}
}
public class App {
public static void main(String[] args) {
Task t1 = new Task() ;
Task t2 = new Task() ;
t1.start();
t2.start();
try {
t1.join();
t2.join();
} catch (InterruptedException e) {
}
}
} ```
【问题讨论】:
-
你到底想在这里实现什么?如果您只是想打印他们的名字,请在计算睡眠持续时间时取出 Math.random() 调用。对于其他一切,您可能需要添加有关您实际想要实现的目标的详细信息以获得帮助
-
@meaningqo 我不想要那种结果 thread1、thread1、thread0。我希望每次 thread0 后跟 thread1 或相反。我把 math.random 给每个线程一个小于 200 毫秒的任意时间来休眠。
-
使用的随机时间“sleep((long) dure);”使得输出“随机”
-
很难真正回答这个问题,因为显然有一个未说明的要求:如果您只想打印交替消息,最简单的方法是只使用一个线程。那么——你想用这两个线程练习什么? CyclicBarrier 或 Exchanger(都在 java.util.concurrent 中)可以做类似的事情,但它们比等待/通知更高级别。另一方面,您似乎可以不使用等待/通知。因此,您需要在这里告诉我们您真正想要完成或学习的内容,并且比“使用线程”更具体一级。
标签: java multithreading java-threads