一、java中线程的两种方式:
1.通过实现Runnable()接口;
2.通过继承Thread类来实现;
下面我们分别来实现这两种方式:
1.实现Runnable()接口
1 public class thd 2 { 3 public static void main(String args[]) 4 { 5 runner1 r1= new runner1(); 6 Thread td1 = new Thread(r1); td1.start(); 11 12 for(int i=0;i<10;i++) 13 { 14 System.out.println("Main() :"+i); 15 } 16 } 17 } 18 19 class runner1 implements Runnable 20 { 21 public void run() 22 { 23 for(int i=0;i<10;i++) 24 { 25 System.out.println("Runner1 :"+i); 26 } 27 } 28 } 29 30
这种方法使用较为普遍和广泛,因为从Thread类继承以后就不能从其他的类继承,而实现Runnable()接口的方式可以从其他类继承并且还可以实现其他接口.
接口的实现run()方法是线程体,需要将该类的对象传到Thread类对象当中;
2.通过Thread类继承的方式:
1 public class thd 2 { 3 public static void main(String args[]) 4 { 5 runner1 r1= new runner1(); 6 r1.start(); 7 8 for(int i=0;i<10;i++) 9 { 10 System.out.println("Main() :"+i); 11 } 12 } 13 } 14 15 class runner1 extends Thread 16 { 17 public void run() 18 { 19 for(int i=0;i<10;i++) 20 { 21 System.out.println("Runner1 :"+i); 22 } 23 } 24 }
能用Runnable()接口的方式就不要用这种方式。
二.线程中的方法:
1.join()将线程合并为一个线程,也就是和单线程调用函数结果一样
1 import java.util.*; 2 public class thd 3 { 4 public static void main(String args[]) 5 { 6 runner1 r1= new runner1(); 7 r1.start(); 8 try 9 { 10 r1.join(); 11 } 12 catch(InterruptedException e) 13 { 14 e.printStackTrace(); 15 } 16 for(int i=0;i<5;i++) 17 { 18 System.out.println("Main "+i); 19 } 20 } 21 } 22 23 class runner1 extends Thread 24 { 25 public void run() 26 { 27 for(int i=0;i<5;i++) 28 { 29 System.out.println("Runner1 "+i); 30 } 31 } 32 }
执行结果如下:
Runner1 0
Runner1 1
Runner1 2
Runner1 3
Runner1 4
Main 0
Main 1
Main 2
Main 3
Main 4