`

threadLocal实例

阅读更多

实例1

package com.bijian.thread;

public class MyThread extends Thread {

	private static ThreadLocal tl = new ThreadLocal() {
		protected synchronized Object initialValue() {
			return new Integer(sernum++);
		}
	};
	private static int sernum = 100;

	MyThread(String name) {
		super(name);
	}

	public void run() {
		for (int i = 0; i < 5; i++)
			System.out.println(getName() + " " + tl.get());
	}
}

 

package com.bijian.thread;

public class ThreadLocalDemo1 {

	public static void main(String[] args) {
		MyThread mt1 = new MyThread("A");
		MyThread mt2 = new MyThread("B");
		MyThread mt3 = new MyThread("C");
		mt1.start();
		mt2.start();
		mt3.start();
	}
}

 

运行结果:
C 101
A 100
B 102
A 100
C 101
A 100
B 102
A 100
C 101
A 100
B 102
C 101
B 102
C 101
B 102

 

实例2

package com.bijian.thread;

public class MyThread extends Thread {

	private static ThreadLocal tl = new ThreadLocal();
	private static int sernum = 100;

	MyThread(String name) {
		super(name);
	}

	public void run() {
		synchronized ("A") {
			tl.set("" + sernum++);
		}
		for (int i = 0; i < 10; i++)
			System.out.println(getName() + " " + tl.get());
	}
}

 

package com.bijian.thread;

public class ThreadLocalDemo2 {

	public static void main(String[] args) {
		MyThread mt1 = new MyThread("A");
		MyThread mt2 = new MyThread("B");
		MyThread mt3 = new MyThread("C");
		mt1.start();
		mt2.start();
		mt3.start();
	}
}

 

运行结果:
A 100
B 101
A 100
C 102
A 100
B 101
A 100
C 102
A 100
B 101
C 102
B 101
C 102
B 101
C 102

 

分享到:
评论

相关推荐

    java 中ThreadLocal实例分析

    "Java 中ThreadLocal实例分析" Java 中的 ThreadLocal 实例分析是指在多线程环境下,如何使用 ThreadLocal 来实现线程安全。ThreadLocal 是 Java 中的一种机制,用于在多个线程中实现变量的隔离。 在上面的代码中...

    事务的封装和Threadlocal实例

    当多个线程并发执行时,每个线程都可以安全地使用自己的`Connection`实例,而不会相互干扰。 总的来说,结合JDBC的事务管理和ThreadLocal,我们可以在多线程环境中更好地实现数据库操作,确保数据的一致性,并提高...

    ThreadLocal应用示例及理解

    创建ThreadLocal实例时,通常会定义一个泛型参数,代表该线程局部变量的类型。例如: ```java ThreadLocal&lt;String&gt; threadLocal = new ThreadLocal(); ``` ### 设置和获取值 在ThreadLocal中,`set()`方法用于...

    ThreadLocal

    当我们创建一个新的ThreadLocal实例时,它并不会立即分配内存,而是等到线程第一次调用`set`或`get`方法时才会为该线程创建一个副本。这个副本存储在线程的ThreadLocalMap中,这个Map是由Thread类维护的,键是...

    JDK的ThreadLocal理解(一)使用和测试

    通过创建ThreadLocal实例,我们可以为每个线程提供一个独立的变量副本,这些副本在各个线程之间互不影响,从而实现线程局部变量的功能。本文将深入探讨ThreadLocal的使用、原理以及一些实际应用中的测试案例。 ### ...

    ThreadLocal的用处

    由于ThreadLocalMap使用弱引用保存键(即ThreadLocal实例),当ThreadLocal变量不再被引用时,垃圾收集器可以回收ThreadLocal实例。但是,如果ThreadLocalMap中的值(通常是对象)仍然被其他强引用保持,那么即使...

    深入理解 Java 之 ThreadLocal 工作原理1

    ThreadLocalMap的实现使用了弱引用(WeakReference&lt;ThreadLocal&lt;?&gt;&gt;)作为key,这是因为即使没有外部引用指向ThreadLocal实例,只要它还在ThreadLocalMap中作为key存在,垃圾收集器就不会回收ThreadLocal实例。...

    java 简单的ThreadLocal示例

    1. **创建ThreadLocal实例:** 首先,你需要创建一个ThreadLocal类型的实例,这将作为你在每个线程中存储值的容器。 ```java ThreadLocal&lt;String&gt; threadLocal = new ThreadLocal(); ``` 2. **设置线程局部变量的...

    JAVA并发-自问自答学ThreadLocal.pdf

    - ThreadLocalMap使用弱引用作为键,这意味着如果线程不再引用ThreadLocal实例,即使ThreadLocal实例仍然存在,但只要没有其他引用,那么在垃圾收集时,ThreadLocal实例会被清除,相应的ThreadLocalMap中的条目也会...

    day18 10.使用ThreadLocal来解决问题

    每个线程都有自己的ThreadLocalMap,当创建新的ThreadLocal实例时,如果没有为当前线程创建过这个映射表,那么就会为当前线程创建一个。ThreadLocal通过get()和set()方法访问或设置线程局部变量,这些操作会直接作用...

    Java中ThreadLocal的设计与使用

    每个线程都有自己的ThreadLocal实例,它们各自保存独立的变量副本,互不影响。ThreadLocal的主要优点在于避免了线程之间的数据共享,减少了同步的需求,从而提高了程序的性能和可读性。 ### ThreadLocal的使用方法 ...

    threadlocal.rar

    ThreadLocal的工作原理可以这样理解:每个ThreadLocal实例都会为每个线程创建一个单独的存储空间,也就是说,当多个线程访问同一个ThreadLocal实例时,每个线程都有自己独立的副本,互不干扰。ThreadLocal并不提供...

    java事务 - threadlocal

    ThreadLocal的使用方法是创建一个ThreadLocal实例,然后通过其set()方法设置线程局部变量,get()方法获取当前线程的该变量值。需要注意的是,ThreadLocal不是线程安全的,它只是保证了线程内部的隔离性,但不负责...

    ThreadLocal_ThreadLocal源码分析_

    在ThreadLocal中,每个实例都有一个内部Map,这个Map存储了键值对,键是ThreadLocal实例,值就是线程本地的变量副本。在JDK 8之前,这个内部Map是`ThreadLocal.ThreadLocalMap`,而从JDK 8开始,改为了`...

    从ThreadLocal的使用到Spring的事务管理

    每个线程都有自己的ThreadLocal实例,并且只能访问自己的副本,不会与其他线程的数据产生冲突,从而实现了线程间的隔离。使用ThreadLocal可以避免在多线程环境下频繁的同步操作,提高程序的效率。例如,在Web应用...

    threadLocal

    ThreadLocal的使用方法通常是创建一个ThreadLocal实例,然后在需要的地方通过它的`set()`方法设置线程局部变量的值,通过`get()`方法获取该变量的副本。在生命周期结束后,通常需要调用`remove()`方法清除线程的副本...

    简单分析Java线程编程中ThreadLocal类的使用共

    1. **创建ThreadLocal实例**:首先,你需要创建一个ThreadLocal实例,这是你将要存储线程局部变量的地方。例如: ```java ThreadLocal&lt;String&gt; threadLocalVar = new ThreadLocal(); ``` 2. **设置线程局部值**...

    正确理解ThreadLocal

    每个线程都拥有自己的ThreadLocal实例,存储在这个实例中的变量只对当前线程可见,其他线程无法访问。 2. **作用**:ThreadLocal主要用在多线程环境下,为每个线程提供独立的、线程私有的变量副本,避免了线程间的...

Global site tag (gtag.js) - Google Analytics