文字篇
线程概念
-
进程
- 程序在处理机的一次运行,(从代码加载,执行至完毕的一个完成过程)
-
线程
- 进程执行过程中产生的多条执行线索,比进程单位更小的执行单位。
- 它没有出口,没有入口,因此自身不能自动运行,而必须栖身于某一进程之中,有进程触发执行。
-
多线程
- java语言把线程或执行环境当作一个封装对象,包含CPU以及自己的程序代码和数据,由虚拟机提供控制。
- Thread类,创建多线程
线程结构
线程的状态
-
新建
-
可运行
- 已经执行start()方法后,可使线程处在可运行状态
- 可运行但没在运行的线程都排在一个队列中,这个队列是就绪队列,
- 可运行状态中,正在运行的线程处于运行状态,等待运行的线程处于就绪状态。
-
死亡
- 当run()方法中最后一个语句执行完毕,及死亡
- 当线程遇到异常退出时便进入了死亡状态
-
阻塞
- 阻塞时线程不能进入就绪队列排队,必须要等到消除阻塞才可以重新进入队列排队
- sleep() wait()是两个常用的引起阻塞的方法
-
中断线程
创建线程
继承Thread类创建
-
步骤
- 从Thread类派生一个子类,在类中一定要实现run()
- 用该类创建一个对象。
- 用start()方法启动线程。
实现Runnable接口创建
- 创建一个实现Runnable()接口的类
- 用该类创建对象
- 用start()方法启动线程
创建线程两种方法的使用条件
-
使用Runnable接口方法情况
-
Thread方法情况
线程的基本控制
线程启动
-
start()
-
run()
- 用来定义线程对象被调度后所执行的操作,用户必须重写run()方法
-
yield()
-
isAlive()
-
sleep(int millsecond)
- 使线程休眠一段时间,试驾你长短由millsecond决定,单位为ms
-
void wait()
线程调度
-
定义
- 调度通常是抢占式,抢占式调度是值可能由多个线程准备运行,但是只有一个在真正运行
-
优先级
-
方法
线程结束
线程挂起
线程互斥
何为互斥
- 同时运行的数据需要共享数据,如何保证共享数据的一致性
对象的锁定标志
-
目的
-
实现互斥锁
- 用volatile关键词声明一个共享变量
- 用Synchronized来声明操作共享数据的一个方法或一段代码
线程同步
同步问题
- 生产者比消费者快,消费者会漏掉一些数据没有取到
- 消费者比生产者快时,消费者取相同的数据
解决问题
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)