我想用Java解决带有多个线程的数学问题。我的数学问题可以分为多个工作单元,我想通过几个线程来解决。
我不希望有固定数量的线程在工作,而是与CPU核心数量匹配的线程数量。我的问题是,为此我在互联网上找不到简单的教程。我发现的只是带有固定线程的示例。
如何才能做到这一点?你能提供例子吗?
你可以通过使用静态运行时方法,确定提供给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(); }