当前位置: 技术问答>java相关
关于线程内部run()方法和非run()方法的一个问题?
来源: 互联网 发布时间:2015-03-08
本文导语: 大家看看为什么带注释得两句语句A和B即使互相变换次序,即先A后B,或者先B后A,程序的输出结果总是: In xxxx Running Done //下面是程序代码 class TestThread3 extends Thread...
大家看看为什么带注释得两句语句A和B即使互相变换次序,即先A后B,或者先B后A,程序的输出结果总是:
In xxxx
Running
Done
//下面是程序代码
class TestThread3 extends Thread {
public void run() {
System.out.println("Running");
System.out.println("Done");
}
private void xxx() {
System.out.println("In xxx");
}
public static void main(String args[]) {
TestThread3 ttt = new TestThread3();
ttt.start(); //语句A
ttt.xxx(); //语句B
}
}
In xxxx
Running
Done
//下面是程序代码
class TestThread3 extends Thread {
public void run() {
System.out.println("Running");
System.out.println("Done");
}
private void xxx() {
System.out.println("In xxx");
}
public static void main(String args[]) {
TestThread3 ttt = new TestThread3();
ttt.start(); //语句A
ttt.xxx(); //语句B
}
}
|
我在
ttt.start(); //语句A
ttt.xxx(); //语句B
之间加了sleep让出cpu,这样新建的Thread在这段时间就真正执行了。
class TestThread3 extends Thread {
public void run() {
System.out.println("Running");
System.out.println("Done");
}
private void xxx() {
System.out.println("In xxx");
}
public static void main(String args[]) {
TestThread3 ttt = new TestThread3();
ttt.start(); //语句A
try { //look here
Thread.sleep(1000);
}catch (InterruptedException e){
}
ttt.xxx(); //语句B
}
}
ttt.start(); //语句A
ttt.xxx(); //语句B
之间加了sleep让出cpu,这样新建的Thread在这段时间就真正执行了。
class TestThread3 extends Thread {
public void run() {
System.out.println("Running");
System.out.println("Done");
}
private void xxx() {
System.out.println("In xxx");
}
public static void main(String args[]) {
TestThread3 ttt = new TestThread3();
ttt.start(); //语句A
try { //look here
Thread.sleep(1000);
}catch (InterruptedException e){
}
ttt.xxx(); //语句B
}
}
|
在原先的程序中,虽然ttt.start()了,但次Thread只是处于了可运行状态,并没有真正运行。
所以结果是...
所以结果是...