如果多个线程需要共享资源以达到线程之间通信的功能,就使用同步机制,如果仅仅需要隔离多个线程的共享冲突,则可以使用ThreadLocal类:为每一个使用该变量的线程提供一个变量值的副本。
代码如下:
package BurningT;
class Account{
private ThreadLocal<String> name = new ThreadLocal<>();
public String getName() {
return name.get();
}
public void setName(String name) {
this.name.set(name);
}
public Account(String name)
{
this.name.set(name);
System.out.println(this.name.get());
}
}
class LocalTest extends Thread
{
private Account account;
public LocalTest(Account account,String name)
{
super(name);
this.account = account;
}
@Override
public void run()
{
for (int i = 0;i < 10;i++)
{
//System.out.println(account.getName().get()+i);
if (i == 6)
{
account.setName(getName());
}
System.out.println(account.getName()+"用户I的值"+i);
}
}
}
public class ThreadLocalTest {
public static void main(String[] args)
{
Account account = new Account("Burning Teng");
new LocalTest(account,"线程甲").start();
new LocalTest(account,"线程yi").start();
}
}
运行结果如下:
Burning Teng
null用户I的值0
null用户I的值1
null用户I的值0
null用户I的值2
null用户I的值1
null用户I的值3
null用户I的值2
null用户I的值4
null用户I的值3
null用户I的值5
null用户I的值4
线程甲用户I的值6
null用户I的值5
线程甲用户I的值7
线程yi用户I的值6
线程甲用户I的值8
线程yi用户I的值7
线程甲用户I的值9
线程yi用户I的值8
线程yi用户I的值9