论坛首页 Java企业应用论坛

管理你的线程池(Executor)

浏览 16882 次
精华帖 (0) :: 良好帖 (6) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-12-16  
zhaoxin1943 写道
关于线程池,java编程思想里讲的比较好,个人觉得。

布置zhaoxin1943有没有相关文章,定拜读~~呵呵
0 请登录后投票
   发表时间:2010-12-16  
贾懂凯 写道
zhaoxin1943 写道
关于线程池,java编程思想里讲的比较好,个人觉得。

布置zhaoxin1943有没有相关文章,定拜读~~呵呵

本人小白加菜鸟,简称小白菜。看您的文章,受益匪浅。
0 请登录后投票
   发表时间:2010-12-16  
看来还得深入看,对线程池这块还比较陌生。
0 请登录后投票
   发表时间:2010-12-16  
囧,为何题为管理线程池呢?这不是对着JDK源码讲了下线程池的实现方式吗?没搞懂。

http://blog.csdn.net/yangdengfeng2003/archive/2009/04/01/4042250.aspx
0 请登录后投票
   发表时间:2010-12-16  
hobitton 写道
囧,为何题为管理线程池呢?这不是对着JDK源码讲了下线程池的实现方式吗?没搞懂。

http://blog.csdn.net/yangdengfeng2003/archive/2009/04/01/4042250.aspx

这篇和我说的一个主题,而且比我权威。不过,我特别不喜欢看那种结论性的文字,那令我头疼!从源码看清晰简单。
0 请登录后投票
   发表时间:2010-12-16  
再深入下 就是BlockingQueue的原理,写的不错
0 请登录后投票
   发表时间:2010-12-16  
贾懂凯 写道
hobitton 写道
囧,为何题为管理线程池呢?这不是对着JDK源码讲了下线程池的实现方式吗?没搞懂。

http://blog.csdn.net/yangdengfeng2003/archive/2009/04/01/4042250.aspx

这篇和我说的一个主题,而且比我权威。不过,我特别不喜欢看那种结论性的文字,那令我头疼!从源码看清晰简单。

其实我主要是想问为啥取这个名字 

那篇文章和你的结合不就好了,看了源码总的需要全面总结下。每次记不得了还看下源码不是件很杯具的事情?
0 请登录后投票
   发表时间:2010-12-16  
我有个问题,还请指教下。

像这样
		int i = 0;
		while(i++ < 50000){
			Object obj = "...";// 假设这个obj有点大,会占点内存,假如每个占1M
			threadPool.execute(new MyThread(obj));// threadPool继承的ThreadPoolExecutor
		}


假如corePoolSize=10,maximumPoolSize = 15吧

跑了不到一分钟,发现机器内存(1G)全被吃光了。队列都满了,可程序还在跑,threadPool还在加线程,这时它加到哪里去了?
0 请登录后投票
   发表时间:2010-12-16   最后修改:2010-12-16
78425665 写道
我有个问题,还请指教下。

像这样
		int i = 0;
		while(i++ < 50000){
			Object obj = "...";// 假设这个obj有点大,会占点内存,假如每个占1M
			threadPool.execute(new MyThread(obj));// threadPool继承的ThreadPoolExecutor
		}


假如corePoolSize=10,maximumPoolSize = 15吧

跑了不到一分钟,发现机器内存(1G)全被吃光了。队列都满了,可程序还在跑,threadPool还在加线程,这时它加到哪里去了?

建议测试一下,内存满了看是不是还能加。如果还能加,那只能说明你的内存计算方法是错的,根本没溢出,不是一个Object 1M10个Object就是10M,这种算法是错的。
0 请登录后投票
   发表时间:2010-12-16  
贾懂凯 写道
78425665 写道
我有个问题,还请指教下。

像这样
		int i = 0;
		while(i++ < 50000){
			Object obj = "...";// 假设这个obj有点大,会占点内存,假如每个占1M
			threadPool.execute(new MyThread(obj));// threadPool继承的ThreadPoolExecutor
		}


假如corePoolSize=10,maximumPoolSize = 15吧

跑了不到一分钟,发现机器内存(1G)全被吃光了。队列都满了,可程序还在跑,threadPool还在加线程,这时它加到哪里去了?

建议测试一下,内存满了看是不是还能加。如果还能加,那只能说明你的内存计算方法是错的,根本没溢出,不是一个Object 1M10个Object就是10M,这种算法是错的。


没溢出,内存不会溢出,先不管我的内存计算方法

我是说,线程队列满了,然后循环程序还在跑,这时候线程池新加的线程,到哪里去了?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics