1.堆内存和栈内存的区别是什么?
线程的堆内存空间是共享的,栈内存空间才是独立的(堆共享,栈独立)。
2.wait()和sleep()的区别?
1.sleep来自Thread类,而wait来自Object类。
2.调用sleep()方法的过程中,线程不会释放对象锁。而调用wait方法线程会释放对象锁。
3.sleep睡眠后不出让系统资源,wait让出系统资源其他线程可以占用CPU。
4.sleep需要指定一个睡眠的时间,时间一到会自动唤醒。
5.wait和sleep的线程状态区别。
a.wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用。
b.sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常。
3.横竖屏切换时候Activity的生命周期?
- 不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏会执行两次。
- 设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次。
- 设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法。