如何有效地多线程

时间:2014-10-24 19:31:43

标签: java multithreading architecture

我正在写一个异步程序,我有两个选择:

A)在一个核心上运行线程并失去并行处理优势

B)在不同核心上运行线程并且存在潜在的延迟问题(核心必须相互通信)

什么是更好的选择?我最好不要担心它并让os决定,或者我可以通过上面的选项获得更多的表现吗?

1 个答案:

答案 0 :(得分:1)

A)如果你有阻止操作,你不一定会失去并行性。你确实说过#34;异步,"但是,你可能不会阻止。线程调度程序将安排其他线程在阻塞时运行。

B)这一切都没有实际意义; Java没有线程亲和力,因此您甚至无法做出选择。操作系统可以选择它使用的核心。线程之间进行通信时的延迟很低 - 最多可能为100ns。这实际上只是线程之间相互沟通的问题。

听起来您真正想知道的是,您仍然可以看到具有异步操作的多个线程的性能优势。是的,你可以。

所有这些都说明了,你应该阅读有关并发模式和Java的更多信息。如果你不正确地实现A或B,性能可能会很糟糕,所以如果你想避免主要的问题,你需要深入了解正在发生的事情。 实践中的Java并发对于这样的事情是一个很好的阅读。