浅谈多线程并发

多线程并发是多个线程同时操作同一个对象,导致和预期结果不一致。引起多线程的主要是全部变量和类变量。用static修饰的变量是是类变量,不管你们创建几个对象,这些对象共享这个类变量,如果有多个线程同时修改这个变量,就造成这个变量不可控制,无法预测该值,导致线程问题,普通的成员变量,如果每次new一个对象该成员变量属于该对象,对象之间不共享普通的成员变量,所以线程是安全,但是对于单例模式的类来说就存在线程安全问题。(注释一些特殊的修饰符和threadlocal等没有考虑)。

下面是两个例子。



new Thread(new Runnable() {


@Override
public void run() {
a = "3";


}
}).start();
new Thread(new Runnable() {


@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
a = "2";


}
}).start();


System.out.println(a);

输出的是3,这是静态变量的例子

普通的成员变量的例子就更好说了,大家都知道实力类,javabean,为什么我们每次使用UserInfo的时候都要new一个对象呢,想想这个问题相信大家就知道了。

阅读更多
个人分类: java
想对作者说点什么? 我来说一句

浅谈OFBIZ.doc

2009年07月07日 930KB 下载

C#摇奖机

2008年01月04日 143KB 下载

JDK5中的多线程并发

2013年03月22日 106KB 下载

没有更多推荐了,返回首页

不良信息举报

浅谈多线程并发

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭