如何通过线程1打印第二个数字和如何通过线程2打印第二个数字

我做了一个程序,使用2个线程打印5个数字。


public class Class1 {


static int value = 6;

 public void show() {

    for (int i = 0; i < value; value--) {

        System.out.println(Thread.currentThread().getName() + " - Number: " + value);

    }

public static void main(String[] args) {

    final Class1 main = new Class1();


    Runnable runner = new Runnable() {

        @Override

        public void run() {

            main.show();

        }

    };


    new Thread(runner, "Thread 1").start();

    new Thread(runner, "Thread 2").start();

}   }

它给了我这样的输出:


Thread 1 - Number: 6

Thread 2 - Number: 6

Thread 1 - Number: 5

Thread 2 - Number: 4

Thread 1 - Number: 3

Thread 1 - Number: 1

Thread 2 - Number: 2

但是我希望它给我这样的输出


Thread 1 - Number: 6

Thread 1 - Number: 5

Thread 1 - Number: 4

Thread 2 - Number: 3

Thread 2 - Number: 2

Thread 2 - Number: 1

我知道我们可以简单地在show()方法中使用if else条件,但是我不想在show()方法中使用if else,我想在main()方法中更改执行以下操作的某些操作完工。


慕码人2483693
浏览 171回答 3
3回答

开心每一天1111

首先是第一件事。您没有在线程中使用同步,如果要使用同步,则join()需要if在run方法中使用static&nbsp;int&nbsp;value&nbsp;=&nbsp;6;不是线程安全的!为了更好地使用AtomicInteger并控制theads,请检查&nbsp;ExecutorService

阿波罗的战车

您可以在第一个线程完成之后等待启动第二个线程,基本上,您需要同步线程执行。为此,您可以:输入具有synchronized相同键的块wait&nbsp;notify在同一把锁上使用关键字使用javaLock类join在第一个线程上使用以等待他完成后再开始第二个线程使用Observable来协调线程的开始还有许多其他。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java