繁体   English   中英

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM