如果多个线程使用同一个数据,那么如何保证线程范围内的数据共享。
我们可以使用一个map来存储当前线程,以及其数据如下:
package andy.thread.traditional.test;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
/**
* @author Zhang,Tianyou
* @version 2014年11月8日 下午2:12:44
*/
// 线程范围内的共享数据
public class ThreadScopeSharedData {
private static int data = 0;
//ThreadLocal 提供了线程范围内的数据共享 只能存贮一个数据
private static Map<Thread, Integer> threadData = new HashMap<Thread, Integer>();
//private static ThreadLocal<Integer> x = new ThreadLocal<Integer>();
public static void main(String[] args) {
for (int i = 0; i < 2; i++) {
new Thread(new Runnable() {
@Override
public void run() {
int data = new Random().nextInt();
System.out.println(Thread.currentThread().getName()
+ " has put data :" + data);
threadData.put(Thread.currentThread(), d