Thread与Runnable 创建

Thread

public class MyThread extends Thread {
 
  public MyThread(String name){
    super(name);
  }

  public void run(){
    for (int i = 0; i < 20; i++) {
      //getName()方法 来自父亲
      System.out.println(getName()+i);
    }
  }
}

// 测试类 
public class Demo {
  public static void main(String[] args) {
    System.out.println("这里是main线程");
    MyThread mt = new MyThread("TR");
    mt.start();//开启了一个新的线程
    for (int i = 0; i < 20; i++) {
        System.out.println("MI:"+i);
    }
  }
}

Runnable

public class MyRunnale implements Runnable{
  @Override
  public void run(){
    for(int i = 0 ; i < 20 ; i++){
      System.out.println(Thread.cerrentThread().getName() + i);

    }
  }
}

// 测试类2 
public class Demo02{
  public static void mian(Stirng []args){
  // 创建自定义类对象 线程任务对象 
  MyRunnable mr = new MyRunnable();
  // 创建线程对象
  Thread t = new Thread(mr,"Run对象");
  t.start();
  
  System.out.println("main的线程");

  }
}

Thread和Runnable区别:
如果一个类继承Thread,他就不适合资源共享,但是使用Runnable接口的话,则更容易实现资源共享.

  1. 使用多个相同代码共享一个资源
  2. 可以避免java中单继承的局限性
  3. 线程池中只能放入Runnable或Callble类线程,不能直接放继承了Thread的类