假设我有一个方法运行,如下所示,
public void run()
{
for(i=loopstart;i<loopend;i++){
//some code here to execute. no dependency exists
}
loopstart&amp; loopend 变量具有循环执行的最小值和最大值。
现在我要做的是将这个循环执行分成2到5个线程,以便并行执行。要做到这一点,我已将此方法更改为
public void run()
{
for(i=thread_start; i<thread_end; i++)
//some code here to execute.
}
变量 thread_start 和 thread_end 是每个线程必须运行的范围。那么如何最好地划分循环执行。假设我在范围
中执行循环 5-94
我希望根据线程数将其划分为多个执行范围 例如
threads ranges
2 5-44, 45-94
3 5-34, 35-65, 66-94
这些只是示例(不完全正确)。我想根据可用的线程来划分它的执行 所以对于 2个帖子,
thread_start=5 ,thread_end=44 1st thread
thread_start=45 ,thread_end=94 2nd thread.
应该如何(使用java代码)在几乎相同的长度范围内划分循环执行?
答案 0 :(得分:1)
public class Looper implements Runnable {
private int start;
private int end;
public Looper(int start, int end){
this.start = start;
this.end = end;
}
@Override
public void run() {
for(int i=start; i<end; i++){
System.out.println("thread id : " + Thread.currentThread().getId() + "; index : " + i) ;
}
}
}
public class Test {
public static void main(String[] args){
Thread looper1 = new Thread(new Looper(1,1000));
Thread looper2 = new Thread (new Looper(1001,2000));
looper1.start();
looper2.start();
}
}
这是你需要的吗?如果需要在运行时获取可用的线程,可以考虑使用ThreadPool。