Thread与RunRunnable实现线程的区别
/**
* <p>Thread与RunRunnable</P>
*
* @author
*
*/
/*
* 实现Runnable接口
*/
class ImpRunnable implements Runnable{
private int count = 1;
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+" : "+(count++));
}
}
/**
* 继承Thread
*/
class ExtThread extends Thread{
private int count = 1;
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+" : "+(count++));
}
}
public class ThreadDemo {
public static void main(String[] args) throws Exception {
/*
* 多线程共享一个对象
* 共享imp对象的run方法
*/
ImpRunnable imp = new ImpRunnable();
Thread t1 = new Thread(imp);
t1.start();
Thread.sleep(1000);
Thread t2 = new Thread(imp);
t2.start();
Thread.sleep(1000);
Thread t3 = new Thread(imp);
t3.start();
Thread.sleep(1000);
System.out.println("---------------------------------");
/**
* 每个线程都是一个实例,使用自己的run方法
*/
ExtThread t4 = new ExtThread();
t4.start();
Thread.sleep(1000);
ExtThread t5 = new ExtThread();
t5.start();
Thread.sleep(1000);
ExtThread t6 = new ExtThread();
t6.start();
Thread.sleep(1000);
System.out.println("---------------------------------");
/**
* 一个线程使用一个对象,所以结果与ExtThread一致
*/
Thread t7 = new Thread(new ImpRunnable());
t7.start();
Thread.sleep(1000);
Thread t8 = new Thread(new ImpRunnable());
t8.start();
Thread.sleep(1000);
}
}
/**
* 结果:
*
* Thread-0 : 1
Thread-1 : 2
Thread-2 : 3
---------------------------------
Thread-3 : 1
Thread-4 : 1
Thread-5 : 1
---------------------------------
Thread-6 : 1
Thread-7 : 1
*
* 实现Runnable接口,可以只创建一个类的实例,而且可以被多个线程共享。
* 而继承Thread类,必须为每一个线程创建不同的实例。因此每个类的实例分配了不同的内存空间,每一个都Count=1开始。
*
*
*//**
* <p>Th