多线程 ThreadLocal Runnable Thread 的深层体会


public class ThreadUtil {

public static void main(String[] args) throws InterruptedException {

PrimeRun p = new PrimeRun();
System.out.println("多线程中的变量:");
for(int i=0;i<10;i++){
new Thread(p).start();
}
Thread.sleep(1000);
System.out.println("当前线程中的变量:");
System.out.println(p.getParam()+">>>>>>"+p.getT().get());
}
}



public class PrimeRun implements Runnable {

private static int param=0;

private static ThreadLocal t=new ThreadLocal();

static{
t.set(0);
}

public void run() {
t.set(param++);
System.out.println(param+">>"+t.get());
}
public static int getParam() {
return param;
}
public static void setParam(int param) {
PrimeRun.param = param;
}
public static ThreadLocal getT() {
return t;
}
public static void setT(ThreadLocal t) {
PrimeRun.t = t;
}
}



运行结果::

多线程中的变量:
1>>0
2>>1
3>>2
5>>4
5>>3
7>>5
8>>7
9>>8
7>>6
10>>9
当前线程中的变量:
10>>>>>>0

说明:::

1. ThreadLocal变量在各个线程中相互独立,即:操作的只是[b]ThreadLocal变量的副本[/b],本身并没有改变。
2. Runnable,Thread 只是实现多线程的一种方式,非ThreadLocal变量在各个线程中是共享的,即:操作的是[b]变量本身[/b]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值