public class RunnableThreadExample implements Runnable {
public int count = 0;
public static void main(String[] args) {
RunnableThreadExample instance = new RunnableThreadExample();
Thread thr = new Thread(instance);
thr.start();
while(instance.count != 5) {
try {
Thread.sleep(500);
System.out.println(" Within main method");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
@Override
public void run() {
while(count < 5) {
try {
System.out.println("Sleeping for 500 seconds within run method");
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
count++;
}
}
}
我在执行run((方法中的sys Out时同时在主方法中同时运行这些系统。
The output looks as follows:
Sleeping for 500 seconds within run method
Sleeping for 500 seconds within run method
Within main method
Sleeping for 500 seconds within run method
Within main method
Within main method
Sleeping for 500 seconds within run method
Sleeping for 500 seconds within run method
Within main method
Within main method
Within main method
当我们调用thr.start((时,不应在运行((上完成执行
您的run
方法将从主线程中调用。相反,start
创建了一个新的执行线程(独立于主线程(,并且新线程执行run
。主线程将立即(无需等待新线程发生的事情(恢复start
之后的下一个指令。
这种并发是您要使用Thread
的原因。