ThreadLocal是用于并发环境下避免竞争,简化编程的机制,它在并发环境下提供了一个逻辑上全局的访问点,来访问线程本地对象。其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是thread local variable(线程局部变量)。它为每一个使用该变量的线程...
分类:
其他好文 时间:
2015-03-03 09:42:34
阅读次数:
164
场景:
1. 需要统计某个线程的对象上创建的个数.
2. 当创建的堆空间需要根据线程需要创建和结束时销毁时.
3. 因为范围是线程只能看到自己的存储数据,所以不需要临界区或互斥量来维护自己的堆内存. 加入如果用全局std::map实现,那么必须在put和get时加锁,这是很损耗资源的.
4. 可以用在维护一个连接,比如socket,database连接....
分类:
编程语言 时间:
2015-03-01 00:25:18
阅读次数:
273
默认配置下,Tomcat 会为每个连接器创建一个绑定的线程池(最大线程数 200)。在大多数情况下你不需要改这个配置(除非增大最大线程数以满足高负载需要)。但是 Tomcat 喜欢在每个工作者线程的 thread-local 上下文缓存一些诸如 PageContext 以及标签缓存的对象。正因如此,就会有你期望 Tomcat 能够将线程关掉以清理出来一些内存的情况。此外,每个连接器维护自己的线程池...
分类:
编程语言 时间:
2015-02-11 18:43:12
阅读次数:
96
进程有id,可以通过getpid()获得,线程也有id,但是glibc没有提供封装。需要自己发出系统调用。在关键路径,系统调用还是对性能有影响的。因此我们可以想到类似glibc对getpid做的cache化封装,用thread local的方式缓存每个线程的id,每个线程只有第一次调用gettid时...
分类:
其他好文 时间:
2014-12-03 13:56:27
阅读次数:
156
MainActivity如下:
package cc.cv;
import android.os.Bundle;
import android.app.Activity;
/**
* Demo描述:
* ThreadLocal使用示例.
* 关于ThreadLocal的官方文档描述
* Implements a thread-local storage, that is, a vari...
分类:
其他好文 时间:
2014-11-13 18:58:41
阅读次数:
179
线程存储原理:为变量在每一个现存的线程里分配一个实例,需要处理器支持,并不是所有都支持!支持全局的,静态的变量,但不支持局部变量。关键字 __thread __thread int i; extern __thread struct state s; static __thread cha...
分类:
其他好文 时间:
2014-11-10 17:21:01
阅读次数:
173
线程本地存储(TLS)是一种机制,通过这种机制进行变量分配,在每个现存线程都有一个实例变量。这种运行模型GCC用来实现这个,起源于IA-64处理器,但是已经被迁移到其他的处理器。它需要大量的支持连接器(ld)、动态连接器(ld.so)和系统库(libc.so和libpthread.so),所以不是到处都可用的。 在用户层,一个新的存储类扩展关键字:__thread.例如:__thread in...
分类:
其他好文 时间:
2014-10-23 10:49:50
阅读次数:
203
一、对ThreadLocal概术JDK API 写道:该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。ThreadLocal 实例通常是类中的 priv...
分类:
编程语言 时间:
2014-09-07 03:17:44
阅读次数:
257
线程局部存储(ThreadLocalStorage),简称TLS,提供了一种存储线程私有数据的方式,每个线程的私有数据对其他线程均不可见。Chromium是一个多进程多线程架构的浏览器,运行时会创建多达30几个线程,其中很多线程需要拥有自己私有数据,在TLS数量有限的系统上,例如Android4.3或更..
分类:
移动开发 时间:
2014-09-04 03:04:08
阅读次数:
1067
public class ThreadLocal extends Object
该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。ThreadLocal 实例通常是类中的 private static 字段,它们希望将状态与某一个线程(例如,用户 ...
分类:
编程语言 时间:
2014-07-29 14:40:08
阅读次数:
286