我想创建并启动5个java线程。线程应显示消息然后停止执行。我这样做是否正确?
public class HelloThread extends Thread {
private String thread_name;
// constructor
HelloThread(String tname) {
thread_name = new String(tname);
}
// override method run()
public void run() {
setName(thread_name);
System.out.println(" Thread " + thread_name); //assigning each thread a name
}
public static void main(String args[]) {
for (int i = 1; i < 6; i++) {
HelloThread mythr_obj = new HelloThread(i + " says Hello World!!! ");
mythr_obj.start(); // start execution of the thread object
}
}
}
答案 0 :(得分:2)
自从在Java 1.4中引入java.util.concurrent
库以来,开发人员很少在最近创建自己的Thread
实例。
今天,你更有可能做到
ExecutorService threadPool = Executors.newFixedThreadPool(5);
List<Future<Integer>> futures = new ArrayList<>();
for (int i = 0; i < 20; ++ i) {
Callable<Integer> callable = () -> {
TimeUnit.SECONDS.sleep(1);
System.out.println("Returning " + i);
return i;
};
Future<Integer> future = threadPool.submit(callable);
futures.add(future);
}
for (Future<Integer> future : futures) {
Integer result = future.get();
System.out.println("Finished " + result);
}
threadPool.shutdown();
答案 1 :(得分:1)
您是否尝试过编译并运行此代码?它看起来是正确的,但我建议您将main
方法放在一个单独的类中。
答案 2 :(得分:0)
是。你做得很好但是正如@FSQ建议的那样,你的整个课程本身就是一个主题。您可以将main方法放在任何其他类中。