gpt4 book ai didi

java - Java中根据线程划分循环执行

转载 作者:行者123 更新时间:2023-12-01 14:52:53 25 4
gpt4 key购买 nike

假设我有一个方法运行如下,

public void run()
{
for(i=loopstart;i<loopend;i++){
//some code here to execute. no dependency exists
}

loopstart和loopend变量具有循环执行的最小值和最大值。

现在我要做的就是将此循环执行分为 2 到 5 个线程,以便并行执行。为了实现这一点,我已将此方法更改为

public void run()
{
for(i=thread_start; i<thread_end; i++)
//some code here to execute.
}

变量thread_startthread_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代码)将循环执行划分为几乎相同的长度范围?

最佳答案

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。

关于java - Java中根据线程划分循环执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14669887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com