深入浅出多线程——线程基础篇
-
概述
多线程是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多线程的实现方式及运行状态,算是一篇《深入浅出多线程》系列的引言。本博客仅仅想把自己掌握的东西做一些沉淀及反思,方便本人及有需要的人查阅。对该系列有兴趣的朋友可以关注我。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步