[b][color=red]example1:[/color][/b]
package Thread;
public class TestThread6 {
public static void main(String args[]){
Thread t = new Runner6();
t.start();
for(int i=0; i<3; i++) {
System.out.println("MainThread: " + i);
}
}
}
class Runner6 extends Thread {
public void run() {
System.out.println(Thread.currentThread().isAlive());
for(int i=0;i<3;i++) {
System.out.println("SubThread: " + i);
}
}
}
---输出结果---
MainThread: 0
MainThread: 1
MainThread: 2
true
SubThread: 0
SubThread: 1
SubThread: 2
[b][color=red]example2:[/color][/b]
package Thread;
public class TestThread5 {
public static void main(String args[]){
Runner5 r = new Runner5();
Thread t = new Thread(r);
t.start();
try{
t.join();
}catch(InterruptedException e){
}
for(int i=0;i<3;i++){
System.out.println("主线程:" + i);
}
}
}
class Runner5 implements Runnable {
public void run() {
for(int i=0;i<3;i++) {
System.out.println("SubThread: " + i);
}
}
}
---输出结果---
SubThread: 0
SubThread: 1
SubThread: 2
主线程:0
主线程:1
主线程:2
[color=red]对比发现在执行thread的时候,先执行Main中的数据,然后执行thread中的run方法。而在example2中会发现,是先执行Thread中的run方法然后执行main中的方法,原因是适应的thread中的join()方法。此处值得注意。[/color]
package Thread;
public class TestThread6 {
public static void main(String args[]){
Thread t = new Runner6();
t.start();
for(int i=0; i<3; i++) {
System.out.println("MainThread: " + i);
}
}
}
class Runner6 extends Thread {
public void run() {
System.out.println(Thread.currentThread().isAlive());
for(int i=0;i<3;i++) {
System.out.println("SubThread: " + i);
}
}
}
---输出结果---
MainThread: 0
MainThread: 1
MainThread: 2
true
SubThread: 0
SubThread: 1
SubThread: 2
[b][color=red]example2:[/color][/b]
package Thread;
public class TestThread5 {
public static void main(String args[]){
Runner5 r = new Runner5();
Thread t = new Thread(r);
t.start();
try{
t.join();
}catch(InterruptedException e){
}
for(int i=0;i<3;i++){
System.out.println("主线程:" + i);
}
}
}
class Runner5 implements Runnable {
public void run() {
for(int i=0;i<3;i++) {
System.out.println("SubThread: " + i);
}
}
}
---输出结果---
SubThread: 0
SubThread: 1
SubThread: 2
主线程:0
主线程:1
主线程:2
[color=red]对比发现在执行thread的时候,先执行Main中的数据,然后执行thread中的run方法。而在example2中会发现,是先执行Thread中的run方法然后执行main中的方法,原因是适应的thread中的join()方法。此处值得注意。[/color]