编写线程运行时执行的代码有几种方式:
- 创建Thread子类的一个实例并重写run方法
- 创建实现了Runnable接口的类,传递给Thread类
- lambda表达式
-
创建Thread的子类
public class MyThread extends Thread { public void run() { System.out.println("Hello new thread"); } }
可以通过下述方式创建上面的一个线程执行:
Mythread myThread = new MyThread(); myThread.start();
start()方法调用后会启动一个新的线程,父线程返回继续执行,子线程中执行上面定义的run()函数
-
实现runnable接口
新建一个实现了Runnable接口的实例对象,作为Thread类构造函数的入参:
Runnable myRunnable = new Runnable() { public void run() { System.out.println("Hello Runnable"); } } Thread thread = new Thread(myRunnable); thread.start();
更常用的是直接使用匿名内部类启动一个线程
new Thread(new Runnable() { [@override](https://my.oschina.net/u/1162528) public void run() { System.out.println("Hello new thread"); } }).start();
-
Java1.8之后可以使用lambda表达式简化一下操作
new Thread( () -> System.our.println("Hello Lambda")).start();
-
使用Executor管理Thread对象
经常会使用单个的Executor来创建和管理系统中所有的任务,对shutdown()方法的调用可以防止新任务被提交给这个Executor。
public class CachedThreadPool { public static void main(String[] args) { ExecutorService exec = Executors.newCachedThreadPool(); for (int i = 0; i < 5; i++) exec.execute(new Runnable() { [@override](https://my.oschina.net/u/1162528) public void run() { System.out.println("") } }; exec.shutdown(); }
}