线程基础知识:
1.线程的定义:线程是进程中的一个实体,作为系统调度和分配的基本单位.在linux系统下,线程又被称之为轻量级进程
2.线程的性质:①线程是进程内的一个相对独立的可执行单元.
②由于线程是被调度的基本单元,而进程不是调度单元.所以,每个进程在创建时,至少需要同时为为该线程创建一个线程.即线程中至少要有一个或一个以上的线 程,否则该进程无法被调度执行
③同一个进程内多个线程可以共享资源,但是线程本身并没有资源,他使用的是进程的资源,也就是说进程才是被及分配并拥有资源的基本单位
④线程是操作系统中基本调度单元,因此线程中包含系统调度的必要信息,并且线程随着生命周期的不同,状态也不相同
⑤由于线程之间资源共享,所以线程之间需要通信和同步机制
3.线程的状态:一个线程在自己完整的生命周期内,可能会存在以下五种状态:①新建状态 ②就绪状态 ③运行状态 ④阻塞状态 ⑤死亡状态
①新建状态:当用new来创建一个线程,例如:new Thread(Runnable s);此时并未调用线程的start()方法,线程并没有开始运行,只是处于新建状态
②就绪状态:线程调用了start()方法,但是cpu的调度程序并没有把它作为运行程序,也就是说此时线程还在等待cpu资源,并没有执行run()方法,这时处于就 绪状态
③运行状态:线程获得了cpu时间,开始执行run()方法的时候,就处于运行状态
④阻塞/等待/睡眠状态:线程有资格进入运行状态,但是因为某些条件导致无法运行,此时只要外界达成了这些条件,该线程就能继续运行
导致陷入此种状态的情况:1.线程通过sleep(int count)方法进入了睡眠,这时一般只要sleep的时间一过线程就能活过来
2.线程在试图获取对应的锁,但是此时锁已经被他人获取,会进入等待状态
3.线程在调用一个在I/O上被阻塞的操作,即该操作在输入输出完成之前是不会返回到它的使用者的
…………
⑤死亡状态:在线程的run(0方法执行完成之后,这个线程会立即死去,进入死亡状态.如果这个时候还想调用start()方法,会抛出 java.lang.IllegalThreadStateException异常