阅读背景:

Thread、Runnable、synchronized关键字

来源:互联网 

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



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: