线程的两种实现方式

package thread;

public class Run_Thread implements Runnable{

	@Override
	public void run() {
		// TODO Auto-generated method stub
	for(int i=0;i<100;i++)
		System.out.println("run"+i);	
	}
	
}
class ex_thread extends Thread{

	@Override
	public void run() {
		// TODO Auto-generated method stub
	
		for(int i=0;i<100;i++)
			System.out.println("thread"+i);	
		}
	}
	
package thread;

public class TestRun {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		ex_thread e=new ex_thread();
	
		Run_Thread r=new Run_Thread();//创建真实角色
		Thread th1=new Thread(r);//创建代理角色+真实角色引用
          //接口加静态态代理 e.start(); th1.start(); } }

 继承Thread +重写run()

启动:创建的子类对象+对象.start()

使用runnable创建线程

1.类实现runnable接口,重写run()   ----》真实角色类

2.启动多线程   使用静态代理

1).创建真实角色

2)创建代理角色 Thread+真实角色引用

3)调用.start()启动线程

推荐使用runnable接口方式

1.避免单继承局限性

2.便于共享资源

原文地址:https://www.cnblogs.com/tianhao/p/4191807.html