多线程
创建新线程
实例化一个Thread实例,然后调用它的start()方法
java
Thread t = new Thread();
t.start(); // 启动新线程
从Thread派生一个自定义类,然后覆写run()方法:
java
public class Main {
public static void main(String[] args) {
Thread t = new MyThread();
t.start(); // 启动新线程
}
}
class MyThread extends Thread {
@Override
public void run() {
System.out.println("start new thread!");
}
}
创建Thread实例时,传入一个Runnable实例:
java
public class Main {
public static void main(String[] args) {
Thread t = new Thread(new MyRunnable());
t.start(); // 启动新线程
}
}
class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("start new thread!");
}
}
用Java8引入的lambda语法进一步简写为:
java
public class Main {
public static void main(String[] args) {
Thread t = new Thread(() -> {
System.out.println("start new thread!");
});
t.start(); // 启动新线程
}
}
sleep()传入的参数是毫秒。
调整暂停时间的大小,我们可以看到main线程和t线程执行的先后顺序。
线程的优先级
可以对线程设定优先级,设定优先级的方法是:
java
Thread.setPriority(int n) // 1~10, 默认值5
线程的状态
New:新创建的线程,尚未执行;
Runnable:运行中的线程,正在执行run()方法的Java代码;
Blocked:运行中的线程,因为某些操作被阻塞而挂起;
Waiting:运行中的线程,因为某些操作在等待中;
Timed Waiting:运行中的线程,因为执行sleep()方法正在计时等待;
Terminated:线程已终止,因为run()方法执行完毕。
当线程启动后,它可以在Runnable、Blocked、Waiting和Timed Waiting这几个状态之间切换,直到最后变成Terminated状态,线程终止。