java线程FAQ

来源:互联网 发布:js中的延时函数 编辑:程序博客网 时间:2024/05/29 16:55

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多线程设计模式》

1 0
原创粉丝点击