sleep()和wait()的区别?

  • 这两个方法来自不同的类分别是Thread和Object
  • sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用
  • sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
  • sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;wait()可以用notify()直接唤起.

notify()和notifyAll()的区别?

锁池:假设线程A已经拥有了某个对象(注意:不是类)的锁,而其它的线程想要调用这个对象的某个synchronized方法(或者synchronized块),由于这些线程在进入对象的synchronized方法之前必须先获得该对象的锁的拥有权,但是该对象的锁目前正被线程A拥有,所以这些线程就进入了该对象的锁池中。

等待池:假设一个线程A调用了某个对象的wait()方法,线程A就会释放该对象的锁后,进入到了该对象的等待池中

nitify()与notifyAll()的区别:

  • 如果线程调用了对象的 wait()方法,那么线程便会处于该对象的等待池中,等待池中的线程不会去竞争该对象的锁
  • 当有线程调用了对象的 notifyAll()方法(唤醒所有 wait 线程)或 notify()方法(只随机唤醒一个 wait 线程),被唤醒的的线程便会进入该对象的锁池中,锁池中的线程会去竞争该对象锁。也就是说,调用了notify后只要一个线程会由等待池进入锁池,而notifyAll会将该对象等待池内的所有线程移动到锁池中,等待锁竞争。
  • 优先级高的线程竞争到对象锁的概率大,假若某线程没有竞争到该对象锁,它还会留在锁池中,唯有线程再次调用 wait()方法,它才会重新回到等待池中。而竞争到对象锁的线程则继续往下执行,直到执行完了 synchronized 代码块,它会释放掉该对象锁,这时锁池中的线程会继续竞争该对象锁。

start()和run()的区别?

run()相当于线程的任务处理逻辑的入口方法,它由Java虚拟机在运行相应线程时直接调用,而不是由应用代码进行调用。

而start()的作用是启动相应的线程。启动一个线程实际是请求Java虚拟机运行相应的线程,而这个线程何时能够运行是由线程调度器决定的。start()调用结束并不表示相应线程已经开始运行,这个线程可能稍后运行,也可能永远也不会运行。

最新文章

  1. sql 单个字段去重查询 distinc 和 group by的效率问题
  2. JSP生命周期
  3. 【BZOJ】3676: [Apio2014]回文串
  4. ActiveReports 9 新功能:借助目录(TOC)控件为报表添加目录功能
  5. 流媒体学习一-------mediastreamer2 的简介
  6. 一:ZooKeeper简介
  7. make clean 和make distclean的区别
  8. 用css样式,为表格加入边框
  9. send js object to webapi or mvc
  10. nexus私服linux搭建问题
  11. 分组密码的工作模式--wiki
  12. JDK8的新特性——Lambda表达式
  13. 微服务之consul
  14. svn提交后 添加注释
  15. 最短路径算法dijkstra的matlab实现
  16. strip_tags、htmlentities、htmlspecialchars的区别
  17. 在单链表的第i个位置后插入一个节点(阿里+腾讯等面试题总结)
  18. OCA,OCP,OCM傻傻分不清?
  19. 20155220 2016-2017-2 《Java程序设计》第九周学习总结
  20. 【python】class之super关键字的作用

热门文章

  1. NSSCTF-[SWPU 2019]Network
  2. 论文解读(Geom-GCN)《Geom-GCN: Geometric Graph Convolutional Networks》
  3. 十分钟掌握CSS基本内容
  4. Java课程设计---学生信息管理系统需求分析及总体设计
  5. AndroidMainifest.xml文件属性
  6. WIN10:全选一个文件夹中的所有文件
  7. PHP之cURL(爬虫)
  8. LeetCode-005-最长回文子串
  9. 4. 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识wrk、wrk2
  10. 为什么我的MySQL会“抖”一下?