河北网站备案,承德网站建设价格,自适应网站设计稿,如何建立一个网站的数据库文件1.sleep和wait的区别
基本的差别#xff1a; Sleep是Thread的方法。Wait是object方法。Wait不传参#xff0c;最终也是调用wait(native)的传参方法。 Sleep方法可以在任何地方使用。 Wait方法只能在synchronized方法或synchronized方法块中使用。
最主要的本质区别#xf…1.sleep和wait的区别
基本的差别 Sleep是Thread的方法。Wait是object方法。Wait不传参最终也是调用wait(native)的传参方法。 Sleep方法可以在任何地方使用。 Wait方法只能在synchronized方法或synchronized方法块中使用。
最主要的本质区别 Thread.sleep只会让出CPU不会导致锁行为的改变。 Object.wait不仅会让出CPU还会释放已经占有的同步资源锁。(不传参就是无限期等待) 必须先有锁才能去释放锁相关的资源。
2.notify和notifyall的区别 都是唤醒处于无限期等待的线程。
两个概念 锁池EntryList 等待池WaitSet 这两个池与object的waitnotify和notifyall相关。以及synchronized相关 锁池 等待池 Lock.wait()此时线程进入等待池不会竞争lock锁。除非被notify或者notifyall释放。 Lock.notifyall.线程进入锁池中竞争该对象的锁。因为b已经执行完所有的逻辑。b释放锁。若有许多线程优先级高的竞争到锁的概率更大。未竞争到锁的会留在锁池中。竞争到锁的会执行直到完成或遇到异常才会释放锁。 所有线程都会被唤醒但是同样没竞争到的在代码中依旧会进行等待。
3.yield函数
暗示当前线程愿意让出cpu的使用权。调度器可能会无视这个暗示。不强制。 对锁的行为没有影响
4.interrupt函数
如何中断线程 已经被抛弃的方法 通过调用stop方法停止线程(可能会导致数据不同步问题) 通过调用suspend()和resume()方法
目前正在使用的方法 调用interrupt通知线程应该中断了