嗨,我正在学习和玩 java 中的线程。我在一本书中读到 Thread 对象和 Running Thread 不是一回事。即使线程完成它的 run 方法运行线程进入死状态我什至用 isAlive() 方法检查。我想知道,如果两者都不同,那么按照我的理解,以下代码不起作用。
public class Main {
public static void main(String[] args) throws ParseException {
Student s = new Student();
Thread t = new Thread(s);
t.start();
t.run();
t.run();
t.run();
t.run();
t.run();
}
}
class Student implements Runnable {
public void run() {
try {
Thread.sleep(1000);
System.out.println(Thread.currentThread().getName());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
它只显示这个输出。main Thread-0 main 或这个 Thread-0 main
从这个结果我了解到线程完成后它的运行方法。运行线程进入死态并调用 Thread obj 方法不起作用。但我无法理解背后的原因,因为 Thread 对象是技能参考,而 Thread 类的其他方法呢。像产量()?开始()?
这是另一种情况,可以清楚地理解我所说的
public class Main {
public static void main(String[] args) throws ParseException {
Student s = new Student();
Thread t = new Thread(s);
t.start();
if (!t.isAlive()) {
t.start();
}
}
}
class Student implements Runnable {
public void run() {
try {
Thread.sleep(1000);
System.out.println(Thread.currentThread().getName());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
文档说如果我们在 Thread t 对象上调用 start 方法,那么它将抛出 java.lang.IllegalThreadStateException。但上面的代码工作正常。我对 Thread 类的哪些方法依赖于运行线程以及哪些方法依赖于线程对象感到非常困惑。我希望你明白这个问题。提前致谢?