我有一个要求,我不确定是否可以通过使用线程来满足。我有两个预定义的 100*100 矩阵,我想执行它们的乘法。我想要的是,不是简单的乘法,而是我想把它分成三个独立的程序,第一个程序将对前 33 行进行乘法,第二个程序将对 33 行到 64 行进行乘法,第三个程序将对第 64 行进行乘法到 100 行. 现在我想并行运行这些程序并收集它们的结果(即行的乘法),然后将这三个不同的结果连接到一个矩阵中。 现在,我已经开发了三个这样的程序或类,但我无法找到任何方法来并行运行它们。 在线程中,我读到我们无法确定哪个线程先执行,哪个线程稍后执行。
任何人都可以告诉我可以使用哪种技术来解决我的问题吗?
我会非常感谢你们。
最佳答案
Java 内置了这种东西。文档是 http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/Executors.html
创建每个对象,将其放入线程池,然后全部运行。
ExecutorService service = Executors.newFixedThreadPool(3);
service.submit(matrixMult1);
service.submit(matrixMult2); // the objects that do the work
service.submit(matrixMult3);
service.shutdown();
service.awaitTermination(1, TimeUnit.HOURS);
这是基本大纲。
关于Java运行并行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12787293/