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):增加程序的健壮性,代码可以被多个线程共享,代码和数据独立。