1. 程式人生 > >多執行緒(二)ThreadLocal

多執行緒(二)ThreadLocal

 ThreadLocal

public class Demo extends Thread{

    static int i = 0;
    
    public Integer getNext(){
        
        i++;
        return i;
    }
    
    
    @Override
    public void run() {
        for (int i = 0; i < 3; i++) {
            System.out.println(currentThread().getName() 
+ "---" + getNext()); } } public static void main(String[] args) { Demo demo = new Demo(); Thread thread = new Thread(demo); thread.setName("執行緒1"); Thread thread1 = new Thread(demo); thread1.setName("執行緒2"); Thread thread2 = new
Thread(demo); thread2.setName("執行緒3"); thread.start(); thread1.start(); thread2.start(); } }

 

ThreadLocal將程式碼修改一下~

package test;

public class Demo extends Thread{

    static Integer i;
    
    
    ThreadLocal<Integer> threadLocal = new ThreadLocal<Integer>();
    
    
public Integer getNext(){ //從ThreadLocal中獲取 i = threadLocal.get(); if (i == null) { i = 0; } i++; //存入ThreadLocal中 threadLocal.set(i); return i; } @Override public void run() { for (int i = 0; i < 3; i++) { System.out.println(currentThread().getName() + "---" + getNext()); } } public static void main(String[] args) { Demo demo = new Demo(); Thread thread = new Thread(demo); thread.setName("執行緒1"); Thread thread1 = new Thread(demo); thread1.setName("執行緒2"); Thread thread2 = new Thread(demo); thread2.setName("執行緒3"); thread.start(); thread1.start(); thread2.start(); } }