我想知道,在 java 1.6 x64 中有许多线程处于等待状态是多么昂贵。
更具体地说,我正在编写跨多台计算机运行并从一台计算机发送/接收数据的应用程序。我觉得为每台连接的机器和任务设置单独的线程会更舒服,比如 1) 发送数据,2) 接收数据,3) 在连接断开时重新建立连接。因此,假设集群中有 N 个节点,每台机器将为 N-1 个邻居中的每一个拥有 3 个线程。通常会有 12 台机器,相当于 33 个通信线程。
这些线程中的大多数大部分时间都在休眠,因此出于优化目的,我可以减少线程数量并为每个线程分配更多工作。比如,例如。重新建立连接是接收线程的责任。或者发送到所有连接的机器是由单线程完成的。
那么拥有许多睡眠线程是否会对性能产生重大影响?