gpt4 book ai didi

java - 同步方式

转载 作者:行者123 更新时间:2023-12-01 17:21:40 25 4
gpt4 key购买 nike

我尝试创建五个线程,相应地,如果一个线程调用一个对象(在本例中为 objsyn)上的同步方法,那么所有其他线程都应该等待,直到该线程完成该对象。所以输出应该按顺序从线程 1 到线程 5。但输出却出现乱序。

    class synctest extends Thread
{
public synchronized void display()
{
try{Thread.sleep(5000*((long)(Math.random())));}
catch(Exception e){}

System.out.println("From synchornized thread "+ Thread.currentThread().getName());
}
public synchronized void run()
{
synctest objsyn = new synctest();
objsyn.display();
}
public static void main(String args[])
{
synctest objsy = new synctest();
Thread t1 = new Thread(objsy,"Thread 1");
Thread t2 = new Thread(objsy,"Thread 2");
Thread t3 = new Thread(objsy,"Thread 3");
Thread t4 = new Thread(objsy,"Thread 4");
Thread t5 = new Thread(objsy,"Thread 5");
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
}
}

最佳答案

不保证线程执行顺序。同步确保在某个时间点只有一个线程执行该代码块,它不关心它是第一个线程(还是第二个线程)。

如果您想真正按顺序执行特定逻辑,那么您实际上并不需要线程。请记住,当您启动一个线程时,它将是与主线程分开的线程。可能是answers for this question帮助你。

关于java - 同步方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18322249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com