实现多线程的方式
实现多线程一般由两种方式,一种是继承Thread类,另一种是继承Runnable接口。
public class CreateThread {
/*方式一:继承Thread类,并重写run()*/
static class MyThread extends Thread{
@Override
public void run() {
System.out.println("Thread!");
}
}
/*方式二:继承Runnable接口*/
static class MyRunnable implements Runnable {
public void run() {
System.out.println("Runnable!");
}
}
public static void main(String[] args) {
/*启动线程,使用start()*/
new MyThread().start();
new Thread(new MyRunnable()).start();
}
}
两种实现方式的区别
主要区别:
- java是单继承 ,也就是说只能继承一个父类,当继承了Thread类后将无法继承其他类,建议使用第二种,将继承关系留给最需要的类;
- 使用runnable接口之后不需要给共享变量添加static关键字,每次创建一个对象,作为共享对象即可;
线程状态
public enum State {
//尚未启动的线程的线程状态
NEW,
//可运行线程的线程状态。处于可运行状态的线程在Java虚拟机中执行,但它可能在等待来自操作系统(如处理器)的其他资源
RUNNABLE,
//等待监视器锁的阻塞线程的线程状态。
//处于阻塞状态的线程正在等待获取锁进入同步代码块或者方法,或者在calling后重新进入同步块/方法
BLOCKED,
//等待线程的线程状态。一个线程由于调用以下方法(Object.wait()、Thread.join()、LockSupport.park())的其中一个而处于等待状态,
//处于等待状态的线程正在等待另一个线程执行特定的操作。
//例如,调用Object.wait()的线程对象正在等待另一个线程调用Object.notify()或Object.notifyAll() 作用于该对象。一个调用 thread .join()的线程正在等待指定的线程终止。
WAITING,
//具有指定等待时间的等待线程的线程状态。
TIMED_WAITING,
//终止线程的线程状态。线程已经完成执行。
TERMINATED;
}
本文探讨了Java中实现多线程的两种主要方法:继承Thread类与实现Runnable接口,对比了它们之间的区别,并介绍了线程的各种状态,包括NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED。
725

被折叠的 条评论
为什么被折叠?



