多线程callable
时间:2011-11-17
来源:互联网
在用callable实现的多线程中,
crawlerThread 是实现callable的类
ExecutorService pool = Executors.newFixedThreadPool(threadNum);
然后pool.submit(new CrawlerThread(talist,shList, i));//多线程执行任务
今天发现我可以直接CrawlerThread crawler = new CrawlerThread();
然后crawler.call();
直接调用线程的方法,而不同过线程池,
那么请问,我直接new对象,调用call()方法有什么缺点,或者说,执行效率是否降低,
我把crawlerThread类改为一个普通的类,调用call()方法与上面new 多线程的对象调用call方法,对于效率有什么影响
crawlerThread 是实现callable的类
ExecutorService pool = Executors.newFixedThreadPool(threadNum);
然后pool.submit(new CrawlerThread(talist,shList, i));//多线程执行任务
今天发现我可以直接CrawlerThread crawler = new CrawlerThread();
然后crawler.call();
直接调用线程的方法,而不同过线程池,
那么请问,我直接new对象,调用call()方法有什么缺点,或者说,执行效率是否降低,
我把crawlerThread类改为一个普通的类,调用call()方法与上面new 多线程的对象调用call方法,对于效率有什么影响
作者: xuejia11 发布时间: 2011-11-17
个人愚见:
你用多线程的方式调用它肯定是效率高,用一般的调用虽然也可以,但是就跟多线程没有意义了,这样的话,你用Callable还有什么意义呢。
你用多线程的方式调用它肯定是效率高,用一般的调用虽然也可以,但是就跟多线程没有意义了,这样的话,你用Callable还有什么意义呢。
作者: wang8118 发布时间: 2011-11-17
callable一般是作为异步调用的响应,如果不要异步调用,那也用不着这个了。
作者: jc8futao 发布时间: 2011-11-17
那么,这么说来,如果我直接调用call方法,普通类会比callable更好一些是吗?
作者: xuejia11 发布时间: 2011-11-17
楼主首先明白并发和并行的区别;
再说,执行性能一般牵涉到时间和空间(主要是占用系统资源的大小)两方面,楼主可能关注的是时间方面;
还有,与运行程序的硬件环境密切相关;
等等。
假设执行一个任务(就是Callable)时间固定(不考虑其它,执行时,完全占用CPU直到任务执行完),那么很明显,在双核(多核)和单核机器上,使用线程和不使用线程,执行效率就会有明显的不同,不使用线程(就是直接new对象,调用call()方法或后面那种改法)就只能利用一半的CPU资源了;
再说,执行性能一般牵涉到时间和空间(主要是占用系统资源的大小)两方面,楼主可能关注的是时间方面;
还有,与运行程序的硬件环境密切相关;
等等。
假设执行一个任务(就是Callable)时间固定(不考虑其它,执行时,完全占用CPU直到任务执行完),那么很明显,在双核(多核)和单核机器上,使用线程和不使用线程,执行效率就会有明显的不同,不使用线程(就是直接new对象,调用call()方法或后面那种改法)就只能利用一半的CPU资源了;
作者: lxbccsu 发布时间: 2011-11-17
问题是 你直接调用 call 就不是多线程了
作者: Squall1009 发布时间: 2011-11-18
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28