线程的两种实现方式
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.便于共享资源