知识大全 Java多线程顺序执行

Posted

篇首语:愿你在孤独难熬的时光里,始终没有辜负那个拼命的自己。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java多线程顺序执行相关的知识,希望对你有一定的参考价值。

Java多线程顺序执行  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    可恶的Java多线程 一直没搞懂同步的作用!        一直以为同步的时候只要锁住对象就能顺序执行了         public class Test         final static byte[] b = new byte[ ];        public static void main(String[] args)         Test t = new Test()         t thread start()         Test t = new Test()         t thread start()                 Thread thread = new Thread(new Runnable()         @Override        public void run()         test()                 )         public void test()         synchronized (this)         for (int n = ; n < ; n++)         System out println(thread getName() + : + n)         try         Thread sleep( )         catch (InterruptedException e)         e printStackTrace()                                                 但是这样是错误的!两个线程还是交替执行!        查阅了很多资料才知道上面这个锁是不正确的 两个线程锁住的this对象不是同一个 所以导致交叉执行 应该修改为         public class Test         final static byte[] b = new byte[ ];        public static void main(String[] args)         Test t = new Test()         t thread start()         t test()                 Thread thread = new Thread(new Runnable()         @Override        public void run()         test()                 )         public void test()         synchronized (this)         for (int n = ; n < ; n++)         System out println(thread getName() + : + n)         try         Thread sleep( )         catch (InterruptedException e)         e printStackTrace()                                                 这样的确就是顺序执行了 因为函数锁住的this对象是同一个 如果去除线程同步当然就会交叉执行啦         但是我还有点不明白的是第一个例子错误的原因是其锁住的对象不是同一个 但是如果我把this改为一个全局静态常量还是不正确!理论上全局静态常量整个运行周期内存中只会有一个对象阿!不明白为什么还是不行!希望有高手可以解答         其实我们用到同步多半是为了让线程顺序执行 比如在做Android开发的时候 我们通常希望前台显示一个进度框 后台线程去执行下载动作 下载完之后前台线程在执行余下操作如界面显示         这个时候其实可以使用线程的join()!        oin方法大家可以查下api 它的意思是等待当前线程执行完后执行完毕才执行其他线程 也就是说如果一个类中有这样一个代码段         thread start()         thread start()         thread join()         thread join()         do something ;        do something ;        那么这段代码会等待两个线程执行完毕后再执行 do something 和 do something 注意 必须先启动所有线程 再join 如果启动一个就join一个 结果是什么?对 那就会是等待thread 执行完再执行thread 再执行后续代码 cha138/Article/program/Java/gj/201311/27467

相关参考

知识大全 高级应用 java多线程设计模式详解之一

  线程的创建和启动    java语言已经内置了多线程支持所有实现Runnable接口的类都可被启动一个新线程新线程会执行该实例的run()方法当run()方法执行完毕后线程就结束了一旦一个线程执行

知识大全 Java类的完整构造执行顺序

Java类的完整构造执行顺序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这里只说一个完整的结

知识大全 Java的多线程-实现多线程及线程的同步

Java的多线程-实现多线程及线程的同步  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一.实现

知识大全 Java多线程编程基础之线程和多线程

Java多线程编程基础之线程和多线程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  随着计算机技

知识大全 Java多线程如何创建多个线程

Java多线程如何创建多个线程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java多线程的同

知识大全 超线程多核心下Java多线程编程分析

超线程多核心下Java多线程编程分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一Java环

知识大全 超线程多核心下Java多线程编程技术分析[4]

超线程多核心下Java多线程编程技术分析[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 超线程多核心下Java多线程编程技术分析[3]

超线程多核心下Java多线程编程技术分析[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 超线程多核心下Java多线程编程技术分析[1]

超线程多核心下Java多线程编程技术分析[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 超线程多核心下Java多线程编程技术分析[2]

超线程多核心下Java多线程编程技术分析[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb