首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

哪位高手能帮小弟我解释关于线程安全的一句话

2012-01-12 
谁能帮我解释关于线程安全的一句话例如类有一个类变量,该类变量会被多个类方法读写,当多线程操作该类的实

谁能帮我解释关于线程安全的一句话
例如类有一个类变量,该类变量会被多个类方法读写,当多线程操作该类的实例对象时,如果线程对类变量有读取、写入操作就会发生类变量读写错误,即便是在类方法前加上synchronized也无效,因为同一个线程在两次调用方法之间时锁是被释放的,这时其它线程可以访问对象的类方法,读取或修改类变量。这种情况下可以将类变量放到ThreadLocal类型的对象中,使变量在每个线程中都有独立拷贝,不会出现一个线程读取变量时而被另一个线程修改的现象。

[解决办法]

Java code
public class Test{    public static void main(String[] args) throws Exception{        Thread t1 = new Thread(new ThreadTest(10));        t1.start();            Thread t2 = new Thread(new ThreadTest(20));        t2.start();        Thread t3 = new Thread(new ThreadTest(30));        t3.start();        Thread t4 = new Thread(new ThreadTest(40));        t4.start();        Thread t5 = new Thread(new ThreadTest(50));        t5.start();    }}class ThreadTest implements Runnable{    public static int i = 0;        public ThreadTest(int i){        ThreadTest.setI(i);    }    public void run(){        System.out.println(ThreadTest.getI());    }    public static int getI() {        return i;    }    public static void setI(int i) {        ThreadTest.i = i;    }} 

热点排行