首页 > 代码库 > Thread-线程
Thread-线程
一台计算机可以同时运行多个进程,每个进程可以同时执行多个线程
进程:a.每一个应用程序都是一个进程
b.进程拥有独立的内存地址空间
c.多进程的"同时"运行依赖与CPU的快速切换
线程:a.每一个线程都是进程内部的一个独立的执行路径
b.线程共享同一块内存空间
c.多线程的"同时"运行依赖与CPU的快速切换
java中的线程类:a.继承Thread类
b.实现Runnable接口
Thread类和Runnable接口都有一个run方法,重写该方法把该线程要执行的语句写入
Thread类有一个start方法专门用于开启线程(直接new无法开启)
通过实现Runnable接口的线程类没有start方法,只能将该类对象作为参数传入Thread的构造new一个对象调用start方法.
线程的5个状态:
新建
↓
就绪
` ↓
运行←→中断
↓
结束
新建:new一个新对象
就绪:从调用start方法开始到start方法方法实现中调用run方法之前
运行:调用run方法,执行run方法
结束:run方法结束
中断:线程在运行过程中没有被CPU执行到
造成中断的5种原因:
1.由于运气不好或者优先级的原因没有抢到CPU
优先级从1到10共10级,增加或减少抢到CPU的几率
2.阻塞状态--专指由于I/O操作导致的线程中断
3.主动使用线程休眠--sleep方法(休眠结束以后开始去抢CPU,而不是直接执行)
4.等待←→唤醒
wait方法--等待,由等待方调用
notify方法--唤醒第一个调用wait方法的线程
notifyAll方法--唤醒所有等待的线程
5.挂起--粗暴的将正在被CPU执行的线程中断
线程的安全性:当两个线程操作同一资源的时候有可能发生安全性问题
使用关键字synchronized解决安全性问题
使用方式:1.作为可选修饰符修饰需要同步的方法
2.在调用资源的地方使用同步块
同步引发的问题--死锁
一对互相依赖执行的资源,同时被两个不同的线程同步锁上其中一个资源,形成死锁
解决方法生产者/消费者(对wait/notify的运用)
Thread-线程