1 java程序中,最少会执行一个线程?
是的,java的程序中,至少会执行一个线程。
2 Thread类的run方法被调用出来后,就会启动新的线程?
不是的,要启动新的线程,必须使用start方法,而不是run方法。
3 Rannable接口中声明有start方法与run方法?
不是的,声明在Rannable接口中的只有run方法。源码如下图:
4 有时候多个线程都可以调用出同一个实例的方法?
是的,正因为如此,所以必须要有线程的共享互斥。
5 有时候多个线程都可以调用出同一个Thread类的实例(Instance)的方法?
是的,虽然是Thread类的实例,但其实本质上和其他实例并无二致,都可以由多个线程来调用。
6 执行sleep方法后,在指定的时间内所有的线程都会暂停执行?
不是的,暂停执行的只有调用sleep方法的线程(即现在的线程)。
7 某个线程在执行Synchronize方法时,其他的所有线程都会停止执行?
不是的,会停止执行的只有要取得相同的锁定(lock)的线程而已。
8 执行sleep方法后,该线程只有在指定的时间内才会进入wait set?
不是的,若是执行sleep,线程不会进入wait set,只有调用wait方法的时候才会进入wait set。
9 调用wait的语句一定要写在synchronize方法中才行?
不是的,调用wait的语句可以写在synchronize方法中,synchronize段中或是从这两者调用的别的方法中。只要执行了wait方法的线程在执行时已取得对象实例的锁定(lock)即可。
10 notifyAll方法就是java.lang.Object类的实例方法?
是的,源码如下图:
参考文献:《java多线程设计模式》