文章目录
- 前言
- 一、多线程基本认识
- 1、程序、进程、线程
- 2、认识单核与多核CPU
- 3、多线程优点
- 4、一个以上的执行空间说明
- 二、线程的创建与使用
- 认识Thread类
- 两种创建线程方式
- 1、创建线程方式一:继承Thread
- 2、创建线程方式二:实现Runnable接口
- 比较两种创建方式
- 常用方法
- 修改线程名
- yield()方法
- join()方法
- sleep()方法
- 线程优先级设置
- 介绍调度
- 线程优先级
- interrupt()方法
- 线程的分类
- 三、线程的生命周期
- Thread.State中的六种状态
- 生命周期中五种状态
- 四、线程的同步
- 1、多窗口卖票(引出问题)
- 继承Thread与实现Runnable接口两种方式
- 问题描述以及解决方案
- 2、同步机制(解决线程安全问题)
- 同步机制介绍
- 方式一:同步代码块
- 方式二:同步方法
- 方式三:Lock锁
- 3、同步方法的好处及坏处
- 4、同步的范围及释放与不释放锁的操作
- 5、小练习
- 五、线程死锁问题
- 1、介绍死锁问题及实例情况
- 2、解决与避免死锁
- 六、线程的通信
- 1、认识线程通信
- 2、线程通信小例子(交替打印1-100)
- 不使用wait()、notify()实现线程通信(不推荐)
- 使用wait()、notify()实现线程通信(推荐)
- 3、经典例题(生产者与消费者)
- 七、JDK5.0新增线程创建方式
- 方式一:实现Callable接口
- 方式二:使用线程池
- 认识线程池的相关API
- 实例:使用线程池创建10个线程来执行指定方法
- 如何使用线程池的属性?
- 相关面试题
- 1、synchronized与Lock 的对比
- 2、sleep()与wait()方法异同点
- 参考文章
前言
本文是付费专栏《Java后端开发从入门到进阶》的配套文章,所属阶段与专题为「阶段一:Java基础与编程内功 / 1.1 Java语言基础」。
专栏介绍:适合 Java 初学者及希望系统查漏补缺的开发者。专栏不仅讲“怎么用”,还会深入源码与底层原理,结合真实开发场景和代码案例,帮助你建立完整的 Java 技术知识体系。
本文所属付费专栏目录:Java后端开发从入门到进阶整体专栏目录汇总
一、多线程基本认识
1、程序、进程、线程
程序(program):指代完成指定任务并使用某种语言编写的一组指令的集合,也指代一段静态的代码。
进程(process):程序的一次执行过程,也可以用一个正在运行的程序来表示进程。它有自己的一个生命周期,自身产生、存在与消亡的过程。
线程(thread):进程中可以细化为线程,我们平时使用的就是主线程,我们也可以开辟其他线程来帮我们并行做其他事。若一个进程同一时间并行执行多个线程,就是支持多线程的!
- 线程作为调度和执行的单位