- 线程与进程
1、进程是有独立运行空间的应用程序。
线程是进程中的一个执行路径,多个线程共享同一空间,线程之间可以随意切换。是进程的进一步划分。
2、线程调度
分时调度 轮流使用
抢占式调度 优先级
- 同步与异步&并发与并行
- 同步与异步
同步:排队执行,效率低安全性高
异步:同时执行,效率高安全性低
- 并发与并行
并发:时间段内同三执行
并行:同一时刻内同时执行
- 继承Thread
重写run方法,通过start启动
线程抢占
匿名内部类的快速使用
每个线程都拥有自己独立的栈空间,共用一份堆内存
- 实现Runnable接口(常用)
- Thread类详解
构造方法:1,任务 2,名称
方法
getName() 返回名称
getID() 返回Id
getPriority() 返回优先级
setPriority() 设置优先级
start() 启动
sleep() 休眠 1,毫秒 2.纳秒
setDaemon() 编辑偶极是否为守护线程/用户线程
- 设置和获取线程名称
- 线程休眠
1秒 = 1000毫秒
- 线程阻塞
耗时操作,所有消耗时间的操作(读取文件)
- 线程中断
一个线程是否结束应该有其自身决定
Stop过时,给线程打标记
标记后进入Catch块,,释放资源,返回自己结束线程
- 守护线程
在启动前设置
十一、线程安全问题
多线程相互修改,在还没count—时,另外的进程进入while循环
排队执行 解决方案
- 同步代码块(隐式锁)
锁对象应该为同一锁对象(注释内的正确)
- 同步方法(隐式锁)
整合成方法加上修饰符
锁对象 非静态为this
静态为类名.class
- 显式锁
l.lock() 上锁
l.unlock() 开锁
十二、公平锁与非公平锁
公平锁:
非公平锁:
十三、线程死锁
两个线程互相等待导致死锁,解决:在有锁的地方不要再调另一个锁
十四、多线程通信
生产者生产完毕消费者开始消费
唤醒和沉睡
十五、线程的六种状态
十六、带返回值的线程Callable
十七、线程池概述
线程容器
频繁创建线程降低效率
四种线程池
1、缓存线程池
2、定长线程池
3、单线程线程池
4、周期任务 定长线程池
十八、Lambda表达式
函数式编程思想