![](/img/trans.png)
[英]Calling sleep on one thread is sleeping all my threads (Java)
[英]Java Threads - how to show when the thread is not sleeping
我创建了一个程序,将所有从0到100的奇数相加。这是通过使用3个同时工作的线程来完成的。 每个线程需要在0到3000毫秒之间睡眠(工作),而我需要显示每个线程的输出(工作)。
现在,我需要显示一个输出,指出线程唤醒时“线程不再处于休眠状态”,并且不知道如何执行该操作。 这是主要方法:
public static void main(String[] args) {
AddOddNumbers task1 = new AddOddNumbers();
task1.start();
AddOddNumbers task2 = new AddOddNumbers();
task2.start();
AddOddNumbers task3 = new AddOddNumbers();
task3.start();
}
这是其余的其他类:
public class AddOddNumbers extends Thread {
public void run(){
int sum = 0;
for(int i = 1; i < 100; i +=2){
try {
sum +=i;
Thread.sleep((long)(Math.random() * 3000));;
} catch (InterruptedException ex) {
Logger.getLogger(AddOddNumbers.class.getName()).log(Level.SEVERE, null, ex);
}
} System.out.println(" The sum is " + sum);
public class AddOddNumbers extends Thread {
public void run(){
int sum = 0;
for(int i = 1; i < 100; i +=2){
try {
sum +=i;
Thread.sleep((long)(Math.random() * 3000));;
} catch (InterruptedException ex) {
Logger.getLogger(AddOddNumbers.class.getName()).log(Level.SEVERE, null, ex);
}
}System.out.println(" The sum is " + sum);
我需要它来显示如下内容:
The sum is 2500
The sum is 2500
The sum is 2500
Thread number 3 is no longer sleeping
Thread number 1 is no longer sleeping
Thread number 1 is no longer sleeping
像这样声明AddOddNumbers的threadNumber属性
public class AddOddNumbers extends Thread {
private int threadNumber;
public AddOddNumbers(int threadNumber) {
this.threadNumber = threadNumber;
}
并修改运行方法,如下所示:
for(int i = 1; i < 100; i +=2){
try {
System.out.println("Thread number " + threadNumber + " is not sleeping");
sum +=i;
Thread.sleep((long)(Math.random() * 3000));;
} catch (InterruptedException ex) {
Logger.getLogger(AddOddNumbers.class.getName()).log(Level.SEVERE, null, ex);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.