三年java经验面试总结,整理了一些java面试题供参考
此内容偏中高级,适合有三年或以上经验者。 java中wait和sleep有什么区别?多线程条件下如何保证数据安全? 答:最大区别是等待时wait会释放锁,而sleep会一直持有锁,wait通常用于线程时交,互,sleep通常被用于暂停执行。 java中volatile和synchronized有什么区别? 1.volatile本质是在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取;synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。2.volatile仅能使用在变量级别;synchronized则可以使用在变量、方法、和类级别的。3.volatile仅能实现变量的修改可见性,并不能保证原子性;而synchronized则可以保证变量的修改可见性和原子性。4.volatile不会造成线程的阻塞;synchronized可能会造成线程的阻塞。5.volatile标记的变量不会被编译器优化;synchronized标记的变量可以被编译器优化。 有了解java的原子类?实现原理是什么? 答:采用硬件提供原子操作指令实现的,即CAS。...