1. 程式人生 > >05_張孝祥_Java多執行緒_執行緒範圍內共享變數的概念與作用

05_張孝祥_Java多執行緒_執行緒範圍內共享變數的概念與作用

概念

可以將每個執行緒用到的資料與對應的執行緒號存放到一個map集合中,使用資料時從這個集合中根據執行緒號獲取對應執行緒的資料,就可以實現執行緒範圍內共享相同的變數。

程式碼

Runnable中的run()方法裡面執行Thread.currentThread()都會對應當前Runnable對應的執行緒,因此A、B中對應的Thread.currentThread()對應所在的Runnable對應的執行緒。

package cn.itcast.heima2;

import java.util.HashMap;
import java.util.Map;
import java.util.Random;

public
class ThreadScopeShareData { private static Map<Thread, Integer> threadData = new HashMap<Thread, 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(), data); new A().get(); new
B().get(); } }).start(); } } static class A{ public void get(){ int data = threadData.get(Thread.currentThread()); System.out.println("A from " + Thread.currentThread().getName() + " get data :" + data); } } static class B{ public void get(){ int data = threadData.get(Thread.currentThread()); System.out.println("B from " + Thread.currentThread().getName() + " get data :" + data); } } }

參考