当前位置:首页 » 服务器技术
开发技术指南» 文章正文
    引言: ThreadLocal ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是thread local variable(线程局部变量)。
 

 

 ·多线程设计要点    »显示摘要«
    摘要:1.多线程中有主内存和工作内存之分, 在jvm中,有一个主内存,专门负责所有线程共享数据;而每个线程都有他自己私有的工作内存, 主内存和工作内存分贝在jvm的stack区和heap区。2.线程的状态有ready, running, sleeping, blocked, 和 waiting几个状态,ready 表示线程正在等待cpu分配允许运行的时间。3.线程运行次序并不是按照我们创建他们时的顺序来......
 ·网络数据流的java处理(1)    »显示摘要«
    摘要:1.庞大的java流处理 首先,之所以说java流的庞大,是因为java中的流处理比其他语言的流处理在内容上多的多。java流在处理上分为字符流和字节流。字符流处理的单元为2个字节的unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。java内用unicode编码存储字符,字符流处理类负责将外部的其他编码的字符流和java内unicode字符流之间......


Java中ThreadLocal的设计与使用
threadlocal

【程序编程相关:DHCP协议概述

【推荐阅读:DHCP的基本信息

threadlocal并非是一个线程的本地实现版本,它并不是一个thread,而是thread local variable(线程局部变量).也许把它命名为threadlocalvar更加合适.线程局部变量(threadlocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是每一个线程都可以独立地改变自己的副本,而不会与其它线程的副本冲突.从线程的角度看,就好像每一个线程都完全拥有该变量.线程局部变量并不是java的新发明,在其它的一些语言编译器实现(如ibm xl fortran)中,它在语言的层次提供了直接的支持.因为java中没有提供在语言层次的直接支持,而是提供了一个threadlocal的类来提供支持,所以,在java中编写线程局部变量的代码相对比较笨拙,这也许是线程局部变量没有在java中得到很好的普及的一个原因吧. 【扩展信息:阿尔卡特向Thales公司转让更多业务

threadlocal的设计

首先看看threadlocal的接口:

object get() ;

// 返回当前线程的线程局部变量副本 protected object initialvalue(); // 返回该线程局部变量的当前线程的初始值

void set(object value);

// 设置当前线程的线程局部变量副本的值

threadlocal有3个方法,其中值得注意的是initialvalue(),该方法是一个protected的方法,显然是为了子类重写而特意实现的.该方法返回当前线程在该线程局部变量的初始值,这个方法是一个延迟调用方法,在一个线程第1次调用get()或者set(object)时才执行,并且仅执行1次.threadlocal中的确实实现直接返回一个null:

protected object initialvalue() { return null; }

threadlocal是如何做到为每一个线程维护变量的副本的呢?其实实现的思路很简单,在threadlocal类中有一个map,用于存储每一个线程的变量的副本.比如下面的示例实现:

public class threadlocal

{

private map values = collections.synchronizedmap(new hashmap());

public object get()

{


...   下一页
 ·如何用java实现web服务器(1)    »显示摘要«
    摘要:一、http协议的作用原理www是以internet作为传输媒介的一个应用系统,www网上最基本的传输单位是web网页。www的工作基于客户机/服务器计算模型,由web 浏览器(客户机)和web服务器(服务器)构成,两者之间采用超文本传送协议(http)进行通信。http协议是基于tcp/ip协议之上的协议,是web浏览器和web服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。http......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE