当前位置: 代码迷 >> J2EE >> 哪位高手能帮小弟我解释关于线程安全的一句话
  详细解决方案

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

热度:98   发布时间:2016-04-22 02:57:59.0
谁能帮我解释关于线程安全的一句话
例如类有一个类变量,该类变量会被多个类方法读写,当多线程操作该类的实例对象时,如果线程对类变量有读取、写入操作就会发生类变量读写错误,即便是在类方法前加上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;    }}
  相关解决方案