首页
学习
活动
专区
圈层
工具
发布

同步法
EN

Stack Overflow用户
提问于 2013-08-19 20:10:18
回答 1查看 95关注 0票数 0

我试图创建一个五个线程,因此,如果一个线程调用一个对象上的同步方法(在本例中是objsyn),那么所有其他线程都应该等待该线程与该对象一起结束。因此,输出应该按照顺序从线程1到线程5。但是输出不正常。

代码语言:javascript
复制
    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();
        }
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-19 20:11:01

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

如果您真的希望按照顺序执行特定的逻辑,那么就不需要真正的线程处理。请记住,当您启动一个线程时,它将是独立于主线程的线程。可能是answers for this question帮你。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18322249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档