1.线程在它的一个完整的生命周期中通常要经历如下的四种状态:1.新建,2.运行,3中断,4.死亡。
2.可以使用Thread类或其子类来创建线程。
3.线程调用 start() 方法将启动线程,使之从 新建状态 ——> 就绪状态 。
一旦轮到它来享用CPU资源时,就可以脱离创建它的线程独立开始自己的生命周期了。
4.当一个线程调用synchronized方法时,其他线程想调用这个synchronized方法时就必须等待,直到线程A调用完该synchronized方法。
5.JVM加载代码,发现主类的main方法之后,就会启动一个线程,这个线程称为“主线程”(main线程),该线程负责执行main方法。
6.线程 不是进程,但其行为很像线程,线程是比进程更小的执行单位。 线程 < 进程
7.一个进程在其执行过程中,可以产生多个线程。
8.run()方法是Runnable接口中的方法。
9.wait()、notify()和notifyAll()都是Object类中的final方法,被所有的类继承、且不允许重写的方法。
10.一个线程在执行同步方法时,如果执行wait()方法( sleep() 方法不可以),使本线程进入中断,就允许其它线程使用这个同步方法。
11.一个因执行wait方法进入中断状态的线程,需要其他线程执行notify()或notifyAll()通知它结束中断状态。
12.javax.swing.Timer类称为计时器线程,计时器的监视器必须是组件类的子类的实例,否则计时器无法启动。
13.线程处于“新建"状态时(在调用start方法之前),(在死亡状态时同样)线程调用isAlive()方法返回的值是false。
14.线程不调用start方法,JVM就不会把它当作一个线程来对待,仅仅当作一个普通的对象而已。
15.线程在执行完run()方法之前,如果再次让线程执行start方法,就会发生ILLegalThreadStateException异常。
16.线程默认是非守护线程。当程序中的所有非守护户线程都已结束运行时,即使守护线程的run方法中还有需要执行的语句,守护线程也立刻结束运行。
17.线程新建后,可以调用run方法进入运行状态。
18. start()方法可以让 新建的线程进入JVM管理的线程列队中。
19.currentThread()方法是Thread类中的static方法,该方法返回当前正在使用CPU资源的线程。
20.线程调用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行。
21.线程调用interrupt()方法将触发InterruptedException异常。
22.vait()方法、notify()及notifyAll()方法在java.lang.object类中。
23.线程默认级别是5级。