3 回答
TA贡献1829条经验 获得超7个赞
您可以通过使用静态运行时方法,确定提供给Java虚拟机的进程数availableProcessors。确定可用处理器的数量后,请创建该线程数量,并相应地拆分工作。
更新:为了进一步阐明,线程只是Java中的一个对象,因此您可以像创建其他任何对象一样创建它。因此,假设您调用上述方法,发现它返回了2个处理器。太棒了 现在,您可以创建一个循环,该循环生成一个新的线程,并拆分该线程的工作,然后触发该线程。这是一些伪代码来说明我的意思:
int processors = Runtime.getRuntime().availableProcessors();
for(int i=0; i < processors; i++) {
Thread yourThread = new AThreadYouCreated();
// You may need to pass in parameters depending on what work you are doing and how you setup your thread.
yourThread.start();
}
有关创建自己的线程的更多信息,请转到本教程。另外,您可能希望查看线程池以创建线程。
TA贡献2041条经验 获得超4个赞
您可能也想看看java.util.concurrent框架。就像是:
ExecutorService e = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
// Do work using something like either
e.execute(new Runnable() {
public void run() {
// do one task
}
});
要么
Future<String> future = pool.submit(new Callable<String>() {
public String call() throws Exception {
return null;
}
});
future.get(); // Will block till result available
这比应付自己的线程池等要好得多。
添加回答
举报