在阅读《Thinking in JAVA》这本书时,我发现了一个关于JAVA多线程的问题。
class ThreadMethod {
private int countdown = 5;
private Thread t;
private String name;
public ThreadMethod(String name) {
this.name = name;
}
public void runTask() {
if (t == null) {
t = new Thread(name) {
public void run() {
while (true) {
System.out.println(this);
if (--countdown == 0) return;
try {
sleep(10);
} catch (InterruptedException e) {
System.out.println("interrupted");
}
}
}
public String toString() {
return getName() + ": " + countdown;
}
};
t.start();
}
}
}
public class ThreadVarations{
public static void main(String[] args) {
for(int i=0;i<10;i++)
new ThreadMethod("ThreadMethod").runTask();
}
}
类ThreadMethod不包含extends Thread
和implements Runnable
。那么这个类如何创建一个流程呢?
你需要用一个给定的类初始化一个新的线程,实现Runnable并调用start,方法run()
将在另一个线程中调用。
new Thread(new ThreadMethod).start();