我无法理解教师的多线程方法。好吧,在展示我们的两个例子之前,我必须说他正在教一群新手(我猜包括我在内 ^.^)所以他可能选择了一种易于理解的多线程方法。另外,我没有去他的课,但我有他的剧本,上面写着以下内容:
他正在做这样的多线程:
class MyThread implements Runnable {
Thread t;
MyThread() {
t = new Thread(this, "Demo");
t.start();
}
public void run() {
try {
for (int i = 5; i > 0; i--) {
System.out.println("Child-Thread:" + i);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
System.out.println("Child interrupted");
}
System.out.println("Child finished");
}
}
我发现这样做更干净:
public class Aufg1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MyThread t1 = new MyThread(1);
ScheduledExecutorService executor = Executors.newScheduledThreadPool(5);
executor.schedule(t1, 1, TimeUnit.SECONDS);
}
static class MyThread implements Runnable {
int number;
public MyThread(int number) {
this.number = number;
}
@Override
public void run() {
// TODO Auto-generated method stub
for (int i = 5; i > 0; i--) {
System.out.println("Thread " + number + ": " + i);
}
}
}
}
不要打扰我为什么使用大小为 5 的线程池。我需要它来进行另一个练习。此外,我可以使用 ThreadPool 进行单次执行,就是这个例子。
有很大的不同吗?有没有更清洁的方法?我知道还有一些其他的多线程方法,虽然我在这里只展示了一种。
谢谢!