weixin_42415480 2011-02-14 17:38
浏览 225
已采纳

关于线程池的小想法

首先 吾辈先声明下 吾辈是菜菜, 所以大湿们觉得的那里说错了 尽量喷~~

今天早上 吾辈蛋疼的看了下 Excutors 的源代码, 又看了下以前用到线程池的一些方法, 发现了一个小问题
吾辈一直是先弄出个线程池, 然后玩命的在线程池里面死命的塞对象


ExecutorService pool = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() + 1);
pool.submit(new xRunnable());
:
:
pool.shutdown();
while (true) {
if(pool.isTerminated())
break;
TimeUnit.SECONDS.sleep(2);
}

线程池的主要目的是减少线程创建与销毁的时间吧? && 资源的创建与销毁
然后吾辈又想了 new xRunnable() 的时候 应该会创建很多资源吧 比如很多Map啊, 一些Bo啊 什么的?
(为了线程安全 很多资源 咱都是 new 出来了 吾辈又不怎么热衷于同步的方法, 总是感觉 线程一多, 同步会大大的影响效率)
问题1: 各位大湿是怎么处理线程安全的啊??

吾辈想了: 那些对象什么的 用完后没有必要被销毁掉, 重新初始化下 应该能继续用吧.
然后咱就这样想了: 把那些xRunnable要用到的资源封装成一个对象, (就叫其"资源库"吧) 然后创建一个与线程大小相同的资源库数组, 当要运行xRunnable时候 将其注入到 xRunnable 对象中.
而需要拿到那个资源库, 根据线程ID 应该可以判断吧, 反正线程结束 资源库的使命也完成了.

问题2: 各位大湿吾辈这样的想法有问题么??

可以能吾辈比较纠结吧 所以没事的时候会钻牛角尖~~

问题3: 咱找了好久, 但是没发现Java的线程池是否可以重写下run的时候的方法
问题补充
NanguoCoffee 写道
1: 要啥资源库呀。 要么重新new一个,要么复用已有的
2: 真够钻牛角尖
3: 没事你修改run的方法干嘛? 要修改就自己写个线程池得了


大湿 请问如何复用已有啊 静态 同步 还是??
  • 写回答

4条回答 默认 最新

  • chenxiang105 2011-02-14 18:32
    关注

    :( 这个, 你的资源库要是能 放取自如 一切就ok了. 问题就会卡在这吧..

    你可以试试. 我以前觉得访问对象 总是new 也慢 也想过 我叫 对象池 不过没实现

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 求会做聚类,TCN的朋友有偿线上指导。以下是目前遇到的问题
  • ¥100 无网格伽辽金方法研究裂纹扩展的程序
  • ¥15 错误于library(org.Hs.eg.db): 不存在叫‘org.Hs.eg.db’这个名称的程序包,如何解决?
  • ¥60 求一个图片处理程序,要求将图像大小跟现实生活中的大小按比例联系起来的
  • ¥50 求一位精通京东相关开发的专家
  • ¥100 求懂行的大ge给小di解答下!
  • ¥15 pcl运行在qt msvc2019环境运行效率低于visual studio 2019
  • ¥15 MAUI,Zxing扫码,华为手机没反应。可提高悬赏
  • ¥15 python运行报错 ModuleNotFoundError: No module named 'torch'
  • ¥100 华为手机私有App后台保活