java多线程实现(thread和runnable接口两种方式以及其区别)

时间:2021-05-06 17:31:42

java 继承thread实现多线程实例


package com.weitao.thread;
/** 
 * @author 作者 weitao: 
 * @version 创建时间:2016-7-14 下午2:36:07 
 * 类说明 
 */
public class TestThread extends Thread{
      
public TestThread(String threadName){
super(threadName);
}

public void run(){

System.out.println(this.getName() + "线程运行开始!");

   for(int i=0; i<10; i++){
    System.out.println(i+ this.getName());
    try {
  sleep(2);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
   }
}

}

package com.weitao.thread;
/** 
 * @author 作者 weitao: 
 * @version 创建时间:2016-7-14 下午1:47:18 
 * 类说明 
 */
public class MultiThreadTest {
     public static void main(String[] args) {
System.out.println(Thread.currentThread().getName());
new TestThread("A").start();
new TestThread("B").start();
   new TestThread("C").start();
   System.out.println("main thread end!");
}
}


java 用runnable实现多线程


package com.weitao.thread;
/** 
 * @author 作者 weitao: 
 * @version 创建时间:2016-7-14 下午3:22:53 
 * 类说明 
 */
public class MultiThreadTestTwo implements Runnable{

    private int ticket =10;  
 
    public void run(){  
        for(int i =0;i<500;i++){  
            if(this.ticket>0){  
                System.out.println(Thread.currentThread().getName()+"卖票---->"+(this.ticket--));  
            }  
        }  
    }  


}


package com.weitao.thread;
/** 
 * @author 作者 weitao: 
 * @version 创建时间:2016-7-14 下午3:58:35 
 * 类说明 
 */
public class TestThreadTwo {


public static void main(String[] args) {

MultiThreadTestTwo mt = new MultiThreadTestTwo();
Thread thread1 = new Thread(mt,"A");
Thread thread2 = new Thread(mt,"B");
Thread thread3 = new Thread(mt,"C");
thread1.start();
thread2.start();
thread3.start();

System.out.println("-----------------------------------------------------");
MultiThreadTestTwo mt1 = new MultiThreadTestTwo();
MultiThreadTestTwo mt2 = new MultiThreadTestTwo();
MultiThreadTestTwo mt3 = new MultiThreadTestTwo();
Thread thread4 = new Thread(mt1,"A");
Thread thread5 = new Thread(mt2,"B");
Thread thread6 = new Thread(mt3,"C");
thread4.start();
thread5.start();
thread6.start();

}
}

打印输出结果即可看到明显区别。

实现Runnable接口比继承Thread类所具有的优势:

1):适合多个相同的程序代码的线程去处理同一个资源

2):可以避免java中的单继承的限制

3):增加程序的健壮性,代码可以被多个线程共享,代码和数据独立。