一、一个进程包含一个线程或多个线程。
二、线程是最小的执行单位。这意味着一个程序可以同时进行两个或多个任务的功能。
三、多线程编程的目的是最大限度的利用CPU资源,使用CPU的空闲时间保持到最低。
四、处于创建状态的线程只是一个空的线程对象,系统并不为它分配资源。
五、当执行start()方法将为线程分配资源,安排其运行,并调用线程的run()方法,这样就是使得该线程处于可运行状态。
六、当发生以下事件时,处于运行时的线程会由运行状态转为不可运行状态:
①、调用Thread.sleep()方法
②、线程调用wait()方法等待特定条件的满足。
③、线程输入/输出阻塞
七、当线程的run()方法执行结束后,线程自然消亡。
八、Java中的每一个对象都一个锁(lock),或者叫监视器(monitor),当线程访问某个对象的synchronized方法时,表示将这个对象上锁,此时其他线程都无法访问这个synchronized方法,而且也无法访问这个对象的其他synchronized方法。直到这个线程执行完毕或者抛出异常或者调用了wait()方法后才会将所释放掉,其他线程才有可能去访问这个synchronized方法。
九、一个类中,先执行静态代码块,接着执行代码块,接着再执行构造方法。一个类中可以有多个静态代码块,也可以有多个代码块。