我有一个应用程序,我需要运行多线程但我希望它只使用计算机的一个核心,好像我的计算机有单核(我知道多核应用程序在单核计算机上的行为),虽然它不是.
该应用程序将部署在客户计算机(Windows XP和7)上,我不希望我的应用程序使用多个核心.可以这样做吗?它取决于编程语言吗?或者所有线程管理都留给操作系统?
提前致谢.
我是多线程的新手,我正在开发一个项目,我试图在我的Java程序中使用4个CPU.我想做点什么
int numProcessors = Runtime.getRuntime().availableProcessors();
ExecutorService e = Executors.newFixedThreadPool(numProcessors);
这可以保证每个CPU都有一个线程工作吗?在我创建线程时,系统不会很忙,但是一段时间后它会非常繁忙.我认为操作系统会选择最不繁忙的CPU来创建线程,但是如果它们在创建时没有特别繁忙的话它是如何工作的呢?
此外,线程池服务应该重用线程,但如果它看到另一个CPU上有更多的可用性,它会杀死线程并在那里产生一个新线程吗?
可能重复:
Java线程关联
我有一个服务器,它有一个16核CPU.
在Java中,我需要创建一些线程(线程数小于16).每个线程需要运行一些操作,例如,处理事件队列.
如何创建这些线程以确保每个线程永远分配给一个核心?我的意思是我不希望操作系统为一个线程交换核心.我只希望一个线程专门在固定核心上运行.
我能这样做吗?
我想要的原因是
我在同一台服务器上处理一些后台任务(计算密集型)和一些面向用户的任务.我不希望用户方面产生任何负面影响.例如,如果我的计算任务被分配到16个核心,那么为用户端运行的线程肯定会受到负面影响,对吧?