class MyThread extends Thread {
public void run() {
System.out.println("MyThread running");
}
}
public class Main {
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
}
}
实现Runnable接口
class MyRunnable implements Runnable {
public void run() {
System.out.println("MyRunnable running");
}
}
public class Main {
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.start();
}
}
Thread类的常用方法和生命周期
Thread类的常用方法:
start():
用于启动线程,当调用start()方法时,线程会执行run()方法中定义的任务。
run():
包含线程的执行代码,需要在自定义的Thread类中重写这个方法来定义线程的行为。
sleep(long millis):
让当前线程休眠指定的时间(以毫秒为单位)。
join():
等待该线程终止。
interrupt():
中断线程。
isAlive():
判断线程是否还存活。
setName(String name):
设置线程的名称。
线程的生命周期:
New(新建状态):
当线程对象被创建但还没有调用start()方法时,处于新建状态。
Runnable(可运行状态):
调用start()方法后,线程进入可运行状态,等待获取CPU时间片。
Running(运行状态):
线程获取CPU时间片后开始执行run()方法中的任务。
Blocked(阻塞状态):
线程被阻塞,等待某个条件的解除,如等待输入输出、等待获取锁等。
Waiting(等待状态):
线程进入等待状态,等待其他线程的通知或中断。
Timed Waiting(计时等待状态):
线程在一定时间内等待,超时后会自动唤醒。
Terminated(终止状态):
线程执行完run()方法中的任务或者出现异常,进入终止状态。
线程同步
同步方法:
可以使用 synchronized 修饰方法,使得每次只有一个线程可以访问该方法。
public synchronized void synchronizedMethod() {
// 同步代码块
}