【问题标题】:create-two-threads-both -display-numbers-one after one创建-两个-线程-两者-显示-数字-一个接一个
【发布时间】:2016-08-16 07:15:40
【问题描述】:

依次写一个从 1 到 10 的线程和另一个从 1 到 10 的线程。

例如:Thread1 输出:1 线程2输出:1 线程1输出:2 线程2输出:2

我已经写了下面的代码

public class Test1 extends Thread
{
public void run(){
    for(int i=1;i<=10;i++){
        //System.out.println(i);
        try{
            System.out.println(Thread.currentThread().getName()+"+i);
            Thread.sleep(500);

        }catch(Exception e){
            System.out.println(e);

        }
    }
}

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Test1 t1=new Test1();
    Test1 t2=new Test1();
    //Test1 t3=new Test1();
    t1.start();
    t2.start();
    //t3.start();

}

}   

Got the output as:-
Thread-1 1
Thread-0 1
Thread-1 2
Thread-0 2
Thread-0 3
Thread-1 3
Thread-0 4
Thread-1 4
Thread-1 5
Thread-0 5
Thread-1 6
Thread-0 6
Thread-1 7
Thread-0 7
Thread-1 8
Thread-0 8
Thread-1 9
Thread-0 9
Thread-1 10
Thread-0 10

但输出不按顺序 我想要输出为: 线程 1 输出:1 线程2输出:1 线程1输出:2 线程2输出:2

【问题讨论】:

  • 我是线程概念的新手。你能帮我实现同步,这样线程会一个接一个地打印到最后一个序列

标签: java


【解决方案1】:

你不能影响这个... 2 个并行工作的线程不是确定性的...

这意味着如果 cpu 有一些空闲资源,它将占用一个线程并执行“一个步骤”......但你不能影响它将是哪个线程。

看看:Can a multi-threaded program ever be deterministic?

【讨论】:

    猜你喜欢
    • 2020-08-31
    • 2022-01-19
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多