【发布时间】:2022-01-07 08:18:45
【问题描述】:
我对 java 很陌生,并开始构建一个小程序来查找给定范围内的素数。 现在我尝试实现多任务处理,例如将要检查的数字分成n个部分,分别进行检查。我想让它尽可能灵活,所以我没有在代码中指定线程数,而是使用了一个提示变量。 现在,代码可以运行,但线程不能并行运行。
这里似乎有什么问题?
[...]
System.out.println("How many Threads shall be used?");
int b1 = scan.nextInt();
scan.close();
for (int i = 1; i <= b1; i++) {
long u = (q/b1)*(i-1);
long o = (q/b1)*i;
System.out.println("Thread "+i+" started.");
Thread t1 = new Thread(new thread1 (u, o, i));
t1.start();
}
class thread1 implements Runnable{
public thread1 (long a, long b, int c) {
//a= min. number, b = max. number, c=number of Thread
primefinder.findPrimes(b,a, c);
}
@Override
public void run() {
// TODO Auto-generated method stub
}
}
【问题讨论】:
-
你应该把你的工作放在 run 方法中。据我所知,您在
thread1构造函数中进行计算。通过放入构造函数,您可以在主(调用)线程上完成所有工作,而当调用t1.start时,它不会做任何事情,因为run 方法中没有定义任何内容。
标签: java multithreading