标签:
由于最近在准备面试,稀稀散散的整理了一些Java常见的问题,问题的答案都是在网上各网站找的,有什么不对的地方还请各位大神指出。由于是用来学习的,所以如果有朋友发现自己的原创不希望在此公开请M我,我会速速删除。
1.Java 中多线程同步是什么?
在多线程程序下,同步能控制对共享资源的访问。如果没有同步,当一个 Java 线程在修改一个共享变量时,另外一个线程正在使用或者更新同一个变量,这样容易导致程序出现错误的结果。
2.Sleep ()、suspend ()和 wait ()之间有什么区别?
Thread.sleep ()使当前线程在指定的时间处于“非运行”(Not Runnable)状态。线程一直持有对象的监视器。比如一个线程当前在一个同步块或同步方法中,其它线程不能进入该块或方法中。如果另一线程调用了
interrupt ()方法,它将唤醒那个“睡眠的”线程。
注意:sleep ()是一个静态方法。这意味着只对当前线程有效,一个常见的错误是调用t.sleep
(),(这里的t是一个不同于当前线程的线程)。即便是执行t.sleep
(),也是当前线程进入睡眠,而不是t线程。t.suspend
()是过时的方法,使用 suspend ()导致线程进入停滞状态,该线程会一直持有对象的监视器,suspend
()容易引起死锁问题。
object.wait ()使当前线程出于“不可运行”状态,和 sleep ()不同的是 wait 是
object 的方法而不是 thread。
Sleep() s调用 object.wait ()时,线程先要获取这个对象的对象锁,当前线程必须在锁对象保持同步,把当前线程添加到等待队列中,随后另一线程可以同步同一个对象锁来调用 object.notify (),这样将唤醒原来等待中的线程,然后释放该锁。基本上 wait ()/notify ()与 sleep ()/interrupt ()类似,只是前者需要获取对象锁。
3. Java三大特性:多态、继承和封装
4.equals 和 == 的区别?
接下来会陆陆续续整理上来。。。
标签:
原文地址:http://www.cnblogs.com/raomengyang/p/4282964.html