线程
cpu执行的最小单位,进程的实际运作单位,程序在执行的时候,都是以线程为单位来执行
与进程的区别
进程是操作系统分配资源和调度的基本单位;一个进程可能包含多个线程;线程之间切换的代价比进程要小。
多线程的优势
提高cpu利用率,在单线程中,如果该线程在进行io操作时,这时cpu是空闲的;如果是多线程中,在cpu空闲的时候可以分配该其他线程使用,这样提高了cpu利用率
多线程的问题
安全性问题,如果有多个线程同时修改某个变量,没有同步控制,容易造成互相覆盖结果,使得最终的结果不正确。
死锁问题,由于线程推进不当造成线程由于没有获得需要的锁而造成线程都不执行(死锁的必要条件:资源互斥,资源不可剥夺,
循环等待,请求与保存)
Java线程创建
基础Thread或者实现Runnable接口可以创建新的线程
线程状态
开始:通过Thread.start创建线程
就绪:线程创建成功后,可以运行的状态
运行:线程执行
阻塞:在执行的过程中,由于没有获得需要的锁或者cpu分配的时间片到用完了,不在执行,等待锁货cpu时间片的状态
结束:线程正常结束或由于异常原因退出