设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

先注册再绑定QQ

查看: 1912|回复: 8
收起左侧

[战报] Java多线程编程的常见陷阱

[复制链接]
发表于 2012-6-4 17:17:47 | 显示全部楼层 |阅读模式
1、在构造函数中启动线程
我在很多代码中都看到这样的问题,在构造函数中启动一个线程,类似这样:
1. public class A{  
2.    public A(){  
3.       this.x=1;  
4.       this.y=2;  
5.       this.thread=new MyThread();  
6.       this.thread.start();  
7.    }  
8.      
9. }   
这个会引起什么问题呢?如果有个类B继承了类A,依据java类初始化的顺序,A的构造函数一定会在B的构造函数调用前被调用,那么thread线程也将在B被完全初始化之前启动,当thread运行时使用到了类A中的某些变量,那么就可能使用的不是你预期中的值,因为在B的构造函数中你可能赋给这些变量新的值。也就是说此时将有两个线程在使用这些变量,而这些变量却没有同步。






Java多线程编程的常见陷阱.rar (30.1 KB, 下载次数: 9, 售价: 2 个鸿鹄币)






发表于 2013-5-1 09:22:15 | 显示全部楼层
学习学习
沙发 2013-5-1 09:22:15 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2014-10-21 12:54:53 | 显示全部楼层
学学一下,加油
板凳 2014-10-21 12:54:53 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2014-10-21 12:55:54 | 显示全部楼层
学学一下,加油
地板 2014-10-21 12:55:54 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2017-3-23 11:12:28 | 显示全部楼层
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
7# 2017-3-23 11:12:28 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2022-3-23 15:52:12 | 显示全部楼层
感谢楼主,努力学习java!
9# 2022-3-23 15:52:12 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2024-3-29 23:21 , Processed in 0.088907 second(s), 9 queries , Redis On.  

  Powered by Discuz!

  © 2001-2024 HH010.COM

快速回复 返回顶部 返回列表