- 浏览: 276503 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (153)
- unix (2)
- sql (3)
- pl/sql (1)
- cvs (1)
- core java (36)
- OOAD UML (1)
- XML (4)
- JDBC (5)
- Hibernate (1)
- HTML (1)
- javascript (2)
- servlet (2)
- jsp (1)
- AJAX (1)
- Struts1.x (0)
- Struts2.x (5)
- Spring (6)
- EJB (2)
- WebService (2)
- 生活 (2)
- 感情 (0)
- 其他 (9)
- jbuilder2005 (1)
- db2 (1)
- groovy (1)
- 银行业务 (1)
- Android (9)
- java设计模式 (8)
- J2SE (2)
- DataBase (4)
- lucene (2)
- java卡 (1)
- flex (3)
- 烹饪 (1)
- 测试 (1)
- java硬件 (2)
- upnp (3)
- S2SH lib (1)
- nio CshBBrain (1)
- socket (1)
- 二维码 (1)
- 热加载 (1)
- hadoop (3)
- NIO (1)
- 新银行前置机预研 (1)
- springmvc3 (1)
- jvm (1)
- sf (0)
最新评论
-
niwowl:
可以!
gson使用在android使用例子 -
smallbee:
xin_jmail 写道首先感谢楼主的文章,让我知道了lock ...
java ReentrantLock Condition调试记录 -
xin_jmail:
首先感谢楼主的文章,让我知道了lock.newConditio ...
java ReentrantLock Condition调试记录 -
smallbee:
brad2309 写道lz 你的两个messageReceiv ...
基于Apache Mina实现的TCP长连接和短连接实例 -
brad2309:
lz 你的两个messageReceived方法是不是错乱了
基于Apache Mina实现的TCP长连接和短连接实例
package com.yuan; import java.io.Serializable; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; public class TestThreadPool { private static int produceTaskSleepTime = 3000; private static int consumeTaskSleepTime = 2000; private static int produceTaskMaxNumber = 1; public static void main(String[] args) { // 构造一个线程池 ThreadPoolExecutor threadPool = new ThreadPoolExecutor(2,4, 3, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(3), new ThreadPoolExecutor.DiscardOldestPolicy()); for (int i = 1; i <= produceTaskMaxNumber; i++) { try { // 产生一个任务,并将其加入到线程池 String task = "task@ " + i; User u = new User(); u.setId(1); u.setName("yqf"); System.out.println("put " + task); ThreadPoolTask t = new ThreadPoolTask(u); threadPool.execute(t); // 便于观察,等待一段时间 Thread.sleep(produceTaskSleepTime); System.out.println("MAIN TASK:"+ u.getName()); System.out.println(" t user: " + t.getUser().getName()); } catch (Exception e) { e.printStackTrace(); } } } /** * 线程池执行的任务 * @author hdpan */ public static class ThreadPoolTask implements Runnable, Serializable { private static final long serialVersionUID = 0; // 保存任务所需要的数据 private User threadPoolTaskData; ThreadPoolTask(User tasks) { this.threadPoolTaskData = tasks; } public void run() { // 处理一个任务,这里的处理方式太简单了,仅仅是一个打印语句 System.out.println("start .." + threadPoolTaskData); /*try { // //便于观察,等待一段时间 Thread.sleep(consumeTaskSleepTime); } catch (Exception e) { e.printStackTrace(); }*/ System.out.println("ThreadPoolTask task:" + threadPoolTaskData); threadPoolTaskData = null; //threadPoolTaskData.setName("3333"); } public User getUser(){ return threadPoolTaskData; } } }
以上代码是主线程构造一个User对象,将user对象传入线程,线程里面对user进行了=null操作。然后回主线程,发现去取System.out.println("MAIN TASK:"+ u.getName());
的时候,还是可以取到,但是调用System.out.println(" t user: " + t.getUser().getName());
确实空指针。
而且如果你在子线程里面对user进行了修改名字操作,System.out.println("MAIN TASK:"+ u.getName());
也是可以找到子线程操作后的user的。
不明白为何会这样??
发表评论
-
bike1
2015-12-07 17:10 0rt -
GPRS打印机的原理
2015-07-31 09:09 710一、什么是GPRS无线打印 ... -
关于 expression="execution(* com.xy.service.*.*(..))"
2015-05-21 09:22 2594先来看看这个spring的配 ... -
md5 sha1 java和javascript实现
2015-05-21 08:11 842<%@ page language="ja ... -
RSA帮助类
2014-11-21 09:36 888package com.cmb.fmserver.passp ... -
src2014-2-17
2014-02-17 21:55 0rt -
springmvc例子
2014-02-11 11:09 0rt -
qhdescjyw
2014-02-11 10:33 0rt -
按字节截取含有中文汉字的字符串
2013-05-07 18:55 3057要求实现一个按字节截取字符串的方法,比如对于字符串&quo ... -
SSL多线程安全问题
2013-04-23 15:44 1697项目原因,代码实现 ... -
wait notify 对象锁
2013-03-14 15:21 1123通常,多线程之间需要协调工作。例如,浏览器的一个显示图片的 ... -
eclipse下配置hadoop环境
2012-12-05 11:44 1380按照http://smallbee.iteye.com ... -
centos虚拟机上安装运行hadoop(伪分布)
2012-11-15 15:28 19271、先在确认能否不输入口令就用ssh登录localhost: ... -
nio 远程主机强迫关闭了一个现有的连接 解决方案
2012-10-17 12:37 4535nio编程过程中会出现: Exception in thre ... -
java nio过程
2012-10-17 11:32 12021、服务端:ServerSocketChannel进行监听,注 ... -
socket 客户端连接池实现
2012-10-15 16:58 6597本文参考:http://cache.baidu.com/c?m ... -
java dom 解析xml例子
2012-08-02 14:09 1503XML格式如下: <?xml version=&quo ... -
DM5 java 例子
2012-08-02 10:38 1200package com.cmb.fbcbcserver; ... -
HTTP短连接模拟长连接 连接数不能超过2个
2012-08-01 15:47 1985项目中有用到服务器推技术,也是由于环境因素,银行系统,行内机房 ... -
java注解使用例子
2012-07-30 11:50 11381、注解定义: import java.lang.annot ...
相关推荐
线程调用类对象 在前面的示例中,我们为线程任务使用了通常的函数。实际上,我们可以使用任何可调用对象或者lambda函数,如下调用类对象的例子: #include #include class MyFunctor { public: void operator()...
线程和内核对象的同步,详细的讲解了4种内核对象的同步过程,以及他们之间的差别
多线程对数据库操作的小程序,可以直接跑,记住要改数据库,线程端口
线程之间通过事件对象通讯,vc技术内幕11章例子
《C++面向对象多线程编程》共分13章,全面讲解构建多线程架构与增量多线程编程技术。第1章介绍了用于构建面向对象程序的不同类型C++组件,以及如何使用这些组件来构建多线程架构。第2、3、4章简要介绍进程、线程、多...
易语言 线程池 多线程 线程互斥 易语言线程互斥的解决办法
文档中讲解了C#中在使用多线程,跨线程操作时报错“线程间操作无效: 从不是创建控件“…”的线程访问它”的解决办法。
c++ 面向对象多线程编程
C++ 创建线程互斥对象的实例源码下载,声明线程函数,创建线程,程序睡眠,释放互斥对象,设置事件对象为无信号状态,生成控制台程序,仅供参考。
一个java 多线程操作数据库应用程序!!!
Windows 2000提供的常用对象可分成三类:核心应用服务、线程同步和线程间通讯。其中,开发人员可以使用线程同步对象来协调线程和进程的工作,以使其共享信息并执行任务。此类对象包括互锁数据、临界段、事件、互斥体...
操作系统实验之线程与进程。 内涵实例源码及报告文档,可参考博客:http://blog.csdn.net/xiaowei_cqu/article/details/7041133
本文及其示例代码,诠释System.Classes.pas中的(多)线程 和System.SyncObjs.pas (深入应用(多)线程时涉及的同步对象),System.Threading.pas线程、线程池、未来、任务及并行库的原理与应用。期待对各位同学和...
C# winform 多线程 让子线程也能操作界面的方法 源代码
4个线程互斥类,代码例子,完整的工程,详细说明了4中互斥对象的作用,对学习多线程编程的朋友很有用处............
这两个线程共享一个数组A,写线程对数组分别进行10次写操作,每次写操作对A的每个元素赋一个相同的值;读线程对数组分别进行10次读操作,每次读操作输出A中所有元素的值。写出相应代码,并分析运行结果。修改代码,使...
鱼刺类_线程操作v4.3鱼刺类_线程操作v4.3鱼刺类_线程操作v4.3鱼刺类_线程操作v4.3鱼刺类_线程操作v4.3鱼刺类_线程操作v4.3鱼刺类_线程操作v4.3鱼刺类_线程操作v4.3鱼刺类_线程操作v4.3鱼刺类_线程操作v4.3
易语言多线程操作源码,多线程操作,子程序1
操作系统—线程
C 创建线程互斥对象的实例源码下载,声明线程函数,创建线程,程序睡眠,释放互斥对象,设置事件对象为无信号状态,生成控制台程序,仅供参考。