并发与并行:正在运行的程序(软件)就是一个独立的进程,线程是属于进程的,多个线程其实就时并发与并行同时进行的。
并发的理解
cup同时处理线程的数量有限
cup会轮询为系统的每个线程服务,由于cpu切换的速度很快,给我们的感觉这些线程在同时执行,这就并发
并行的理解(依赖于cup的逻辑处理器)
在同一个时刻,同时有多个线程被cup同时处理并执行
线程生命周期
线程的状态:也就是线程从生到死的过程,以及中间经理的各种状态及状态转换
理解线程的状态有利于提高并发编程的理解能力
线程的6种状态总结
New(新建) 线程刚被创建,但是并未启动
Runnable(可运行) 线程已经调用了start()等待cup调度
Blocked(锁阻塞) 线程在执行的时候为竞争到锁对象,则线程今年入Blocked状态
Waitring(无限等待) 一个线程进入Watring状态,另一个线程调用Notify或者NotifyAll方法才能够唤醒
Timed Waiting(计时等待) 同waiting状态,有几个方法有超时参数,调用他们将进入Timed Watring 状态,带有超时参数常用的方法有 Thread.sleep ,Object.wait
Teminated(被终止) 因为run() 方法正常退出而死亡,或者因为没有捕获的异常终止 了run()方而死亡