我有一个算法来计算网格的东西看上去非常大致是这样的:如何让两个线程执行两个不同的循环或方法?
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