Rom*_*man 5 java performance multithreading threadpool
我想知道应该使用线程池的边缘在哪里.我可以在不使用线程池的情况下每秒创建多少个新线程,仍然可以避免明显的性能损失?
是否有任何可观察的开源线程池实现?
考虑到成本,唯一有效的回答是自己测试(不太优雅的方式告诉你我从来没有做过这样的测试,也永远不会做,因为现代执行机制提供了非常先进的创建/销毁机制) .
考虑到现有的实现,Java 现代版本(从 Java 5 开始)提供了ThreadPoolExecutor 的各种子类,这些子类结合了线程池的优点和最现代的 java.util.concurrent 概念:Executors。
此外,我永远不会建议你忘记线程并用 Runnable、callable 和其他更高级的计算对象来代替它们。这样,您可以轻松切换 Executors 的实现。
您应该始终使用线程池.不仅仅是为了性能,而且为了易用性,java.util.concurrent包为您提供.使用Java 5及更高版本,内置了线程池.
不要考虑"线程",而是使用Executor接口来执行您需要执行的任务.创建新的线程池非常简单:
Executor executor = Executors.newFixedThreadPool(5);
Run Code Online (Sandbox Code Playgroud)
有关java.util.concurrent包的完整文档,请访问:http: //java.sun.com/javase/6/docs/api/java/util/concurrent/package-frame.html
| 归档时间: |
|
| 查看次数: |
5392 次 |
| 最近记录: |