继承Thread类

  1. package com.mashibing.juc.c_000_threadbasic;
  2. import java.util.concurrent.*;
  3. public class T02_HowToCreateThread {
  4. static class MyThread extends Thread {
  5. @Override
  6. public void run() {
  7. System.out.println("Hello MyThread!");
  8. }
  9. }
  10. //启动线程的5种方式
  11. public static void main(String[] args) throws Exception {
  12. new MyThread().start();
  13. }
  14. }

实现Runnable接口

相比继承Thread类,这种实现Runnable接口的方式更合适 因为一个类实现Runnable接口后还可以从其他类去继承 但一个类继承了Thread类之后不能再从其他类继承

  1. package com.mashibing.juc.c_000_threadbasic;
  2. import java.util.concurrent.*;
  3. public class T02_HowToCreateThread {
  4. static class MyRun implements Runnable {
  5. @Override
  6. public void run() {
  7. System.out.println("Hello MyRun!");
  8. }
  9. }
  10. //启动线程的5种方式
  11. public static void main(String[] args) throws Exception {
  12. new Thread(new MyRun()).start();
  13. }
  14. }

使用Lambda表达式

  1. package com.mashibing.juc.c_000_threadbasic;
  2. import java.util.concurrent.*;
  3. public class T02_HowToCreateThread {
  4. //启动线程的5种方式
  5. public static void main(String[] args) throws Exception {
  6. new Thread(() -> {
  7. System.out.println("Hello Lambda!");
  8. }).start();
  9. }
  10. }