- class Single{
- private static Single s = null;
- private Single(){}
- public static Single getInstance(){
- if(s==null){
- synchronized(Single.class){
- if(s==null) //应为对s用两条语句所以可能产生多线程安全问题
- s = new Single();
- }
- }
- return s;
- }
- }
复制代码
我想问的是毕老师说要是只用一条语句就不会产生多线程的安全问题,但是我学过汇编,我们知道一条java的执行语句在汇编里面可能是多条执行语句,而cpu执行的步骤更像汇编的语法那样,一天java执行语句可能需要cpu执行多条指令,这样看来即使是一条java执行语句也可能在执行一条cpu指令后切换?难道cpu能识别java执行语句?确保执行完一条java语句(假设是3条cpu指令)后在切换到其他位置区执行? |