我有一個算法來計算網格的東西看上去非常大致是這樣的:如何讓兩個線程執行兩個不同的循環或方法?
public class Main {
pass1 ;
pass2 ;
public static void main(String[] args) throws java.lang.Exception {
Function f = new Function();
f.solve(pass1, pass2);
}
}
public class Function {
public void solve(pass1, pass2) {
method1(pass1, pass2);
method2(pass1, pass2);
method3(pass1, pass2);
}
method1(pass1, pass2) {
//parse grid
for (row = 0; row < numofrows; row++) {
for (col = 0; col < numofcols; col++) {
method4(stuff in here to pass);
}
}
}
method2(pass1, pass2) {
//parse grid
for (row = 0; row < numofrows; row++) {
for (col = 0; col < numofcols; col++) {
method4(stuff in here to pass);
}
}
}
method3(pass1, pass2) {
//do stuff
}
method4(stuff) {
//add object to hashmap
}
}
我想使算法快使用線程。
我的想法是讓一個線程使用偶數增量計數器執行method1和/或method2,另一個線程使用更多的cpu執行它,因爲現在它只使用25%(我認爲是1/4內核)。
如果我製作method2even()
和method2odd()
,是否可以讓線程執行不同的循環或方法?如果是的話我將如何實現這一點,我一直在努力了幾個小時,我不能換我的頭周圍...
將邏輯分成單獨的類,實現'Callable'接口併爲其執行... – MadProgrammer 2014-11-24 05:21:47