仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 534|回复: 10
打印 上一主题 下一主题

[学习教程] 了解下JAVA的Java线程:深切ThreadLocal

[复制链接]
爱飞 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:09:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。
ThreadLocal与线程成员变量另有区分,ThreadLocal该类供应了线程部分变量。这个部分变量与一样平常的成员变量纷歧样,ThreadLocal的变量在被多个线程利用时分,每一个线程只能拿到该变量的一个正本,这是JavaAPI中的形貌,经由过程浏览API源码,发明并不是正本,正本甚么观点?克隆品?大概是其余模样,太含混。
正确的说,应当是ThreadLocal范例的变量外部的注册表(Map<Thread,T>)产生了变更,但ThreadLocal范例的变量自己切实其实是一个,这才是实质!
上面就做个例子:
1、尺度例子
界说了MyThreadLocal类,创立它的一个对象tlt,分离给四个线程利用,了局四个线程tlt变量并没有呈现共用征象,二是各用各的,这申明,四个线程利用的是tlt的正本(克隆品)。
/**
* 利用了ThreadLocal的类
*
* @author leizhimin 2010-1-5 10:35:27
*/
public class MyThreadLocal {
        //界说了一个ThreadLocal变量,用来保留int或Integer数据
        private ThreadLocal<Integer> tl = new ThreadLocal<Integer>() {
                @Override
                protected Integer initialValue() {
                        return 0;
                }
        };
        public Integer getNextNum() {
                //将tl的值猎取后加1,并更新设置t1的值
                tl.set(tl.get() + 1);
                return tl.get();
        }
}
/**
* 测试线程
*
* @author leizhimin 2010-1-5 10:39:18
*/
public class TestThread extends Thread {
        private MyThreadLocal tlt = new MyThreadLocal();
        public TestThread(MyThreadLocal tlt) {
                this.tlt = tlt;
        }
        @Override
        public void run() {
                for (int i = 0; i < 3; i++) {
                        System.out.println(Thread.currentThread().getName() + "        " + tlt.getNextNum());
                }
        }
}
/**
* ThreadLocal测试
*
* @author leizhimin 2010-1-5 10:43:48
*/
public class Test {
        public static void main(String[] args) {
                MyThreadLocal tlt = new MyThreadLocal();
                Thread t1 = new TestThread(tlt);
                Thread t2 = new TestThread(tlt);
                Thread t3 = new TestThread(tlt);
                Thread t4 = new TestThread(tlt);
                t1.start();
                t2.start();
                t3.start();
                t4.start();
        }
}
<p>
你希望java的IDE整合。这个是没有必要的,重要的是你理解java有多深以及怎么组织你的代码,即使没有IDE,代码照样能够编译运行的。
蒙在股里 该用户已被删除
沙发
发表于 2015-1-20 15:31:07 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
活着的死人 该用户已被删除
板凳
发表于 2015-1-29 12:17:00 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
简单生活 该用户已被删除
地板
发表于 2015-2-6 00:42:11 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
飘飘悠悠 该用户已被删除
5#
发表于 2015-2-6 15:08:15 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
分手快乐 该用户已被删除
6#
发表于 2015-2-13 11:49:57 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
飘灵儿 该用户已被删除
7#
发表于 2015-2-14 10:56:05 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
莫相离 该用户已被删除
8#
发表于 2015-3-4 05:36:22 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
柔情似水 该用户已被删除
9#
发表于 2015-3-11 17:33:43 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
若相依 该用户已被删除
10#
发表于 2015-3-19 03:54:05 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
若天明 该用户已被删除
11#
发表于 2015-3-27 05:09:31 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 13:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表