看到一道面试题 在实际运用上也有用 记录一下
相同点:一旦执行方法,都可以使得当前的线程进入阻塞状态
不同点:
1)两个方法声明的位置不同:Thread类中声明sleep(),Object类中声明wait()
2)调用的要求不同:sleep()可以在任何需要的场景下调用;wait()必须使用在同步代码块或同步方法中
3)关于是否释放同步监视器如果两个方法都使用在同步代码块或同步方法中 ,sleep()不会释放锁,wait()会释放锁。
线程的三种方法:
1、继承Thread类,重写run方法
2、实现Runnable接口,重写run方法
3、实现Callable接口,重写call方法
线程安全:同步代码块 和同步方法 Lock