线程知识点
1、Java程序的并发机制是多线程。
2、Java中的线程由三部分组成,虚拟机的CPU,封装在Java.lang.Thread类中;CPU所执行的代码,传递给Thread类;CPU所处理的数据,传递给Thread类。
3、Java中的线程体是由线程类的run()方法定义,该方法定义线程的具体行为。
4、具有相同优先级的多个线程的调度可能是分时的,也可能是线程逐个运行,有具体的JVM而定。
5.sleep()使比其优先级低的线程运行,让程序挂起一段时间,使其他的线程得到执行的机会,一旦计时器结束计数,就立即可以投入运行。被调用后,一定使线程改变当前状态。
yield()只让给同优先级运行,如果没有同等优先级的线程等待执行,可能在进入到可执行状态后马上又被执行。如果调用yield(),不能保证使该线程停止运行。
join()方法使当前的线程等待,直到 t 结束为止。
6、线程的生命周期有6个状态:新建状态(new)、可运行状态(run)、阻塞状态、休眠状态(Sleep)、等待状态wait()、终止状态(Blocked)。
7、在Java语言中提供两种创建线程的方法:通过继承Thread类创建线程;通过实现Runnable接口来创建线程。
8、在多线程并发程序设计中,能够给对象X加锁的语句是synchronized(x)
9、**notify()**方法用来实现线程之间的通信
10、如果线程正处于运行状态,则它可能到达的下一个状态是可运行状态、阻塞状态、终止状态。
11、若线程执行语句synchronized(this)没有成功,则该线程将进入的状态是阻塞状态。
12、中断线程比较安全的做法是引入共享变量,所以使用标志flag,通过设置flag通知线程 t 结束。
13、Java多线程并发控制中,用于在代码标识临界区的关键字是synchronized。
14、对象的锁在 synchronized()语句执行完后;在synchronized()语句块中出现异常时;持有锁的线程调用该对象的wait()方法时 持有线程返还。