-
概述
多线程是java编程中非常重要的一块,在多核CPU时代,多线程是最直接提高程序执行效率的途径。所以学好多线程对我们极其重要。
- Java多线程的基本应用
创建多线程有两种方式:
1,继承Thread类
/** * @author itunic.com * 继承Thread实现多线程 * @see Thread */ public class RunThread extends Thread { /** * 线程执行内容。 */ @Override public void run() { System.out.println("Thread execution content!"); } public static void main(String[] args) { //创建线程对象 RunThread rt = new RunThread(); //启动rt线程 rt.start(); } }
2,实现Runnable接口
/** * @author itunic.com * Runnable接口实现多线程 * @see Runnable */ public class RunnableThread implements Runnable { /** * 线程执行内容。 */ @Override public void run() { System.out.println("Thread execution content!"); } public static void main(String[] args) { //创建线程对象 Thread t = new Thread(new RunnableThread()); //启动t线程 t.start(); }
- Java多线程的6种状态
根据官方定义,线程状态分为:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED六种状态。
NEW: 线程尚未启动处于该状态。也就是说 new Thread 之后,调用start方法之前所处于的状态。
RUNNABLE: 线程处于JVM运行状态,但可能正等待操作系统的执行调度。
BLOCKED: 线程阻塞状态,导致该状态的原因通常是它处于临界资源池,等待一个“锁”。
WAITING:通常是指线程拥有对象锁后进入相应的区域,调用锁对象的wait()方法后产生的一种结果。除此之外,还有变相的实现方式:Thread.join()、LockSupport.park()等。
TIMED_WAITING:与WAITING状态类似,不同的是TIMED_WAITING拥有超时设置,当超过设置的时间,该状态自动变为RUNNABLE状态。导致该状态的实现方式有:Thread.sleep(long timeout)、Thread.join(long timeout)、Object.wait(long timeout)、LockSupport.parkNanos、LockSupport.parkUntil等。
TERMINATED:该状态与NEW状态一样为JVM内部状态,不会映射到操作系统的线程状态。该状态为线程结束后的状态,表示线程执行完毕。
- 结语
本文介绍了java多线程的实现方式及运行状态,算是一篇《深入浅出多线程》系列的引言。本博客仅仅想把自己掌握的东西做一些沉淀及反思,方便本人及有需要的人查阅。对该系列有兴趣的朋友可以关注我。