线程基础知识
进程:QQ.exe Wechat.exe 这些是进程。一个进程包含多个线程。
线程:例如写博客,在idea 中写代码,一边写,一边自动保存,写是一个线程,保存是一个线程。
并发:多线程去抢(操作)同一个资源。
并行:几个人一起走,多个线程同时进行。多个线程或者线程池。
线程有五种状态:
新建状态(New) 线程对象被创建后,处于新建状态。Thread thread = new Thread();
就绪状态(Runnable) 也可称为'可执行状态',线程对象被创建后,其它线程调用了该对象的start()方法,从而来启动该线程。thread.start() 处于就绪状态的线程,随时可能被CPU调度执行。
运行状态(Running) 线程获取CPU权限进行执行。线程只能从就绪状态进入到运行状态。
阻塞状态(Blocked) 阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。阻塞状态有三种:1.等待阻塞 wait(通过调用线程的wait()方法,让线程等待某工作的完成) 2.同步阻塞 (线程在获取synchronized同步锁失败(因为锁被其它线程所占用),它会进入同步阻塞状态) 3.其他阻塞(通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态)。
死亡状态(Dead): 线程执行完了或者因异常退出了run()方法,该线程结束生命周期。