共享数据
一些概念
java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致的更新,线程应该确保通过排他锁单独获得这个变量。
无状态对象
无状态对象是指一个类,既不包含任何域,也不包含任何对其他类中的域的引用。
无状态对象没有共享数据,一定是线程安全的。
共享数据 和 不共享数据
线程中的数据分类两种:共享数据 和 不共享数据。
- 不共享数据:每个线程中,数据都属于当前线程,而不能被其他外部线程访问。这样的数据为不共享数据。
- 共享数据:在多个线程中,可以访问到同一个变量,此时这个变量为多线程共享数据。多个线程间都可以访问修改。共享变量:如果一个变量在多个线程的工作内存中都存在副本,那么这个变量就是这几个线程的共享变量
如下代码,多个线程间访问同一个shareCount数据。shareCount数据是多个类共享变量。
public class ShareThread extends Thread {
private int shareCount = 5;
@Override
public void run(){
shareCount--;
System.out.println("Thread Name:"+ this.currentThread().getName()
+ " ShareCount:" + shareCount
);
}
public static void main(String[] args) {
Thread shareThread = new ShareThread();
Thread v1 = new Thread(shareThread);
Thread v2 = new Thread(shareThread);
Thread v3 = new Thread(shareThread);
Thread v4 = new Thread(shareThread);
v1.start();
v2.start();
v3.start();
v4.start();
}
}
posted on
浙公网安备 33010602011771号