我一直在研究多线程编程的一些研究,例如this academic webpage,并且已经注意到为连接到给定服务器的每个客户端创建一个Thread
非常流行。事实上,我发现了一些样本客户端 - 服务器程序就是这样做的。 (我试图采纳这个想法,但现在,我有点怀疑。)根据Java:如何编程,建议我使用ExecutorService
创建和管理Thread
自程序员无法预测系统实际调度Thread
的时间,尽管创建并启动了线程的顺序。
我打算做什么
如前所述,我正在创建一个为每个客户端创建Thread
的服务器。客户端将向我发送数据,Thread
将获取数据,将其存储在文件中,并记录数据。
我的问题
使用ExecutorService
创建Thread
(并管理它们!)与为每个客户提供Thread
实际上相同,但更易于管理吗?此外,它是否会消除由着名的“每个客户端一个线程”的想法引起的开销?
答案 0 :(得分:1)
使用ExecutorService来创建线程(并管理它们!)实际上与给每个客户端一个线程有效,但更易于管理?
是
此外,它是否会消除由着名的“每个客户端一个线程”的想法引起的开销?
没有。开销通常是根据使用线程池不会更改的活动线程数。