设为首页 加入收藏

TOP

Java多线程顺序执行
2014-11-24 11:50:18 来源: 作者: 【 】 浏览:1
Tags:Java 线程 顺序 执行

Java多线程,一直没搞懂同步的作用!


一直以为同步的时候只要锁住对象就能顺序执行了:


但是这样是错误的!两个线程还是交替执行!



查阅了很多资料才知道上面这个锁是不正确的,两个线程锁住的this对象不是同一个,所以导致交叉执行。应该修改为:


这样的确就是顺序执行了,因为函数锁住的this对象是同一个,如果去除线程同步当然就会交叉执行啦。



但是我还有点不明白的是第一个例子错误的原因是其锁住的对象不是同一个,但是如果我把this改为一个全局静态常量还是不正确!理论上全局静态常量整个运行周期内存中只会有一个对象阿!不明白为什么还是不行!希望有高手可以解答。


这个时候其实可以使用线程的join()!



oin方法大家可以查下api,它的意思是等待当前线程执行完后执行完毕才执行其他线程。也就是说如果一个类中有这样一个代码段:


thread1.start();


thread2.start();


thread1.join();


thread2.join();


do something 1;


do something 2;


那么这段代码会等待两个线程执行完毕后再执行 do something 1 和 do something 2,注意:必须先启动所有线程,再join。如果启动一个就join一个,结果是什么?对,那就会是等待thread1执行完再执行thread2,再执行后续代码。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Cocos2D 2.0 模板安装无权限问题.. 下一篇ImageView ScaleType 的扩展之Top..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·深入理解 Java 集合 (2025-12-27 07:22:48)
·Java集合框架全面解 (2025-12-27 07:22:45)
·时隔 15 年,巨著《J (2025-12-27 07:22:43)
·定义一个类模板并实 (2025-12-27 06:52:28)
·一文搞懂怎么用C语言 (2025-12-27 06:52:25)