以前从来没有想过这个问题,多线程操作一个变量时如何处理?
如果多个线程访问了同一个变量,你的程序就存在隐患。有3种方法修复它:
l 不要跨线程共享变量;
l 使状态变量为不可变的;或者
l 在任何访问状态变量的时候使用同步。
如果一个类可以安全地被多个线程使用,而调用者不需要任何动作(来确保线程的安全性),它就是线程安全的。
如何判断是否为线程安全的呢?
如果能拿到方法的源码: 1、方法里的代码在同一时刻只能被一个线程执行,这个方法是线程安全的。 2、方法里的代码在同一时刻能被多个线程执行,但线程使用的变量,对象等是线程独立的,这个方法也是线程安全的。 3、方法里的代码在同一时刻能被多个线程执行,不同线程使用了共享的变量、对象等,如果这些共享的东西本身是线程安全的,这个方法也算是线程安全的。 |