haha7840 2013-08-01 17:53 采纳率: 0%
浏览 350
已采纳

线程池execute与queue add 区别

[code="java"]
private BlockingQueue queue = new LinkedBlockingQueue();

private ThreadPoolExecutor executor = new ThreadPoolExecutor(3, 50, 10, TimeUnit.SECONDS, queue);

[/code]

请问大婶们,queue.add() 与 executor.execute() 区别,源码实在看的头晕@@

  • 写回答

4条回答 默认 最新

  • clxy大叔 2013-08-01 22:46
    关注

    [quote]queue.add() 与 executor.execute() 区别[/quote]
    这个...关公战秦琼吗?

    queue就是个阻塞队列,add方法是往里面塞东西,不成功抛异常。
    通常会用push,和add的区别是不成功则等待。

    executor是任务执行器,execute是执行个任务(Runnable接口)的。内部会新建个线程或重用个线程等方式来执行这个任务。
    通常推荐用ExecutorService的submit方法来拿结果处理异常等。

    这两个东西没多大关系,谈区别也只能说:“它们是两种不同的东西?!”

    另外,ThreadPoolExecutor 这个类属于底层实现类,实际使用过程中推荐用Executors这个工厂类来获得实例,不推荐直接使用。

    当然如果你是学习目的,那就可以无视推荐了。

    关于CPU,理想效果是所有CPU都干活(如果这台机器专门跑这个程序的话)。
    但貌似不同系统,线程和系统进程之间的关系比较复杂,可能只能调调试试了吧。

    最大值应该是不要超过实际CPU数量来着...

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

报告相同问题?

悬赏问题

  • ¥15 shape_predictor_68_face_landmarks.dat
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制