ThreadLocal实例说明

原创 2012年03月23日 09:07:12
package cn.xcy.javathead;

import java.util.Random;

public class javaThreadLocal {
	public static void main(String []args){

		for(int i=0;i<10;i++){
			new Thread(new Runnable(){
				@Override
				public void run() {
					int data = new Random().nextInt();
					MyThreadLocalData.getThreadInstance().setName("xiangchenyu=>"+data);
					MyThreadLocalData.getThreadInstance().setAge(data);
					new A().get();
					new B().get();
				}
			}).start();
		}

	}
	static class A{
		public void get(){
			MyThreadLocalData mld=MyThreadLocalData.getThreadInstance();
			System.out.println("A线程的名字==>"+mld.getName());
			System.out.println("A线程的年龄==>"+mld.getAge());
		}
	}
	static class B{
		public void get(){
			MyThreadLocalData mld=MyThreadLocalData.getThreadInstance();
			System.out.println("B线程的名字==>"+mld.getName());
			System.out.println("B线程的年龄==>"+mld.getAge());
		}
	}
}

class MyThreadLocalData{
	private MyThreadLocalData(){}
	private static ThreadLocal<MyThreadLocalData> map=new ThreadLocal<MyThreadLocalData>();
	public static MyThreadLocalData getThreadInstance(){
		MyThreadLocalData instance=map.get();
		if(instance==null){
			instance=new MyThreadLocalData();
			map.set(instance);
		}
		return instance;
	}
	private String name;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

 由上可知,ThreadLocal是起到了拷贝数据的作用,get相当于get(CurrentId), set 相当于(setCurrentId,ThreadName);
当多个线程需要用到自己内部独立的数据的时候就可以想到ThreadLocal了

如:
        第一个小朋友有年龄,班级,姓名
        第二个也一样
        .....一直到第N个小朋友,他们可以共用一个Student类,但是他们的名字和年龄等属性各不相同。所以可以用到ThreadLocal类了


事务的封装和Threadlocal实例

  • 2016年03月26日 19:00
  • 688KB
  • 下载

ThreadLocal实例2

**下面的例子中创建了两个线程,每个线程中存在多个局部变量。要使对象A和对象B输出当前线程的局部变量,需要使用ThreadLocal,多个变量放到一个实体类中实现。**...

ThreadLocal实例

实例一: package com.thread; public class ThreadLocalTest { private static ThreadLocal threadLocal ...
  • gybyylx
  • gybyylx
  • 2012年09月25日 16:12
  • 750

ThreadLocal详解及说明

  • 2013年08月19日 14:10
  • 4KB
  • 下载

ThreadLocal使用实例

ThreadLocal为每一个线程都提供了变量的副本,使得每个线程在某一时间访问到的并不是同一个对象,这样就隔离了多个线程对数据的数据共享  T就是要做成副本的对象,这样对于一个线程,该T始终与其绑...

ThreadLocal使用实例

ThreadLocal为每一个线程都提供了变量的副本,使得每个线程在某一时间访问到的并不是同一个对象,这样就隔离了多个线程对数据的数据共享  Java代码   package ...

Android 厉害了ThreadLocal的工作原理和实例分析

ThreadLocal介绍    ThreadLocal如果单纯从字面上理解的话好像是“本地线程”的意思,其实并不是这个意思,只是这个名字起的太容易让人误解了,它的真正的意思是线程本地变量。看看...

java高级进阶关于java多线程的应用 ThreadLocal多线程实例详解

ThreadLocal很容易让人望文生义,想当然地认为是一个“本地线程” 。其实,ThreadLocal并不是一个 Thread,而是 Thread 的局部变量,也许把它命名为 ThreadLocal...

ThreadLocal类讲解及实例

早在Java 1.2推出之时,Java平台中就引入了一个新的支持:java.lang.ThreadLocal,给我们在编写多线程程序时提供了一种新的选择。使用这个工具类可以很简洁地编写出优美的多线程程...

ThreadLocal,静态变量,实例变量,局部变量的线程安全,回复:ByteBuffer 到底怎么用?网络编程中一点总结!

之前都是业务层次开发,现在公司进行的网络编程,一下子要了解太多java底层的东西并进行应用,我现在边学习边应用。由于知识能力有限,在上次发博客时出现了一个小小的纰漏,而这个纰漏被细心的博友发现了。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ThreadLocal实例说明
举报原因:
原因补充:

(最多只允许输入30个字)