雨中漫步 发表于 2012-6-4 17:17:47

Java多线程编程的常见陷阱

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的构造函数中你可能赋给这些变量新的值。也就是说此时将有两个线程在使用这些变量,而这些变量却没有同步。











木宇龙 发表于 2013-5-1 09:22:15

学习学习

﹎注销ㄨ恛憶 发表于 2014-10-21 12:54:53

学学一下,加油

﹎注销ㄨ恛憶 发表于 2014-10-21 12:55:54

学学一下,加油

﹎注销ㄨ恛憶 发表于 2014-11-6 14:20:16


学习学习

凉咖啡 发表于 2015-2-9 14:21:27

学习学习

linux初学者 发表于 2017-3-23 11:12:28

顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶

luzhixiong 发表于 2017-4-28 16:40:55

赞一个

masterpiglet 发表于 2022-3-23 15:52:12

感谢楼主,努力学习java!
页: [1]
查看完整版本: Java多线程编程的常见陷阱