多執行緒(二)ThreadLocal
阿新 • • 發佈:2019-01-12
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();
}
}