关于java中线程sleep的一个问题

2025-05-17 00:51:03
推荐回答(2个)
回答1:

这个肯定是不能达到预期效果的,,

从你的代码看,你是创建了两个线程,但是这两个线程之间对于控制台来说,没有互斥属性,所以两个线程同时启动,同时(从CPU时间上来说不是同时,但是从区块时间上来说就是同时)输出内容,同时进入sleep状态,所以看到的结果不是你期望的。

你可以将第二个线程类做如下修改:

public class Threads2 implements Runnable{
    @Override
    public void run() {
        for(int i=0;i<10;i++){
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("线程2第"+i+"次");
        }
    }
}

应该可以看到你想要的效果

回答2:

有什么问题吗