线程(Thread)是进程(Process,正在运行的程序的实例)中的单一顺序的控制流。多个线程之间共享内存,是同一个进程的不同「支线」。
「多线程」即在一个程序中启动多个线程,表现为多个任务「平行」运行。
首先需要将待启动的新线程放在一个 Thread
类的 run()
方法中,有两个方法创建这种类:
Thread
类的子类。Runnable
接口。更常用,原因:
然后调用这个类的 start()
方法,将立即返回,同时线程启动开始运行。不能直接调用它的 run()
方法。
// 先做一个类,实现 Runnable 接口
class MyThread implements Runnable {
// 把要做的事情放在 run() 方法中
@Override
public void run() {
// 做点什么
}
public MyThread() {
super();
}
}
// 实例化一个对象,然后启动
Thread t = new MyThread();
t.start();
在 Java 8 后用 lambda 表达式可以简写为
Thread t = new Thread(() -> {
// 做点什么
});
t.start();
线程可以被自发地停止。
run()
方法正常退出,线程自然终止。run()
方法中发生异常而没有被捕获,线程意外终止。~~调用线程的 stop()
方法可以在外部终止一个线程。~~不安全,已经废弃。
在 Java 中线程有 5 种状态,分别是:
NEW
,线程创建但没有 start()
的状态。