sleep和wait经常被面试官问到,它们的区别如下:

1.sleep是Thread类的静态本地方法,wait则是Object类的本地方法。

2.sleep方法不会释放lock,但wait会释放,而且会加入到等待队列。

sleep就是把cpu的执行资格和执行权释放了出去,不再运行此线程,当定时时间结束再取回cpu资源,参与cpu的调度,获取到cpu资源后就可以继续运行了。而如果sleep是该线程有锁,那么sleep不会释放这个锁,而是带着锁进入冻结状态,也就是说其他需要这个锁的线程根本不可能得到这个锁,也就是说无法执行程序。如果睡眠期间其他线程调用了这个线程的interrupt方法,那么这个线程也会抛出interruptexception异常返回,这点和wait是一样的。

3.sleep方法不依赖与同步器synchronized,但是wait需要依赖synchronized关键字。

4.sleep不需要手动唤醒,wait需要。

5.sleep一般用于当前线程休眠,或则轮询暂停操作,wait则用于多线程之间的通信。

6.sleep会让出cpu执行时间且强制上下文切换,而wait则不一定,wait后可能还有机会重新竞争到锁继续执行的。

执行结果:

22222222

1111

其实不是线程安全,应该是内存安全,堆是共享内存, 可以被所有线程所访问

当一个多线程访问一个对象时,如果不进行额外的同步控制或其他协调操作,调用这个对象的行为都可以获得正确的结果,我们就说这个线程是安全的。

堆是进程和线程共有的空间,分为全局堆和局部堆。全局堆是所有没有分配的空间,局部堆就是用户分配的空间。堆在操作系统对进程进行初始化的时候分配,运行过程中也可以向系统要额外的堆,但是用完了还要还给操作系统,要不然就是内存泄漏。

在java中,堆是java虚拟机所管理内存中最大的一块,是所有线程共享的一块区域,在虚拟机启动时创建。堆所存在的内存区的唯一目的就是存放对象实例,几乎所有的对象实例和数组都在这里分配内存空间。

网络上有个如下的例子,列举出runable在数据共享上更好用,其实这个推断是不对的,这个例子的代码设计就产生了错误,第一个new了两个对象,第二个new了一个对象,导致产生的错误。

 

 

 

 

 

 

华为面试100题:java开发工程师(中)相关推荐

  1. 【面试】上海 java开发工程师/自动化测试开发工程师 面试题

    推荐学习论坛,仅用于复习面试,不建议用来首次学习 https://www.bysocket.com/ 面试前必刷题 - Java面试题全集 https://blog.csdn.net/jackfrue ...

  2. 面试网易严选Java开发工程师,太真实了,直接凉凉(凉经)

    点关注,不迷路:持续更新Java相关技术及资讯!!! 内容源于群友投稿!记录一次面试网易失败的经验,分享给大家,感谢支持! 前言 金九银十,金九都只剩下最后一天了,面试的有成功有凉凉的,今天分享一次面 ...

  3. 华为面试100题:java开发工程师(上)

    jkd的组成结构  java的跨平台是通过jvm虚拟机实现的  java代码执行流程 首先java代码通过javac编译成.class文件,.class文件进入类装载子系统,装载进入运行时数据区,通过 ...

  4. 思源科技java面试_【企业招聘笔试真题】思源Java开发工程师笔试题

    Java开发工程师笔试题 1.用最有效率的方法算出2乘以8等于几? 2.下面的程序输出结果是多少? 3.Import java.util.Date; 4.Public class Test exten ...

  5. Java入门基础及面试100题--初入门

    Java入门基础及面试100题 注:适合应届毕业生或java初入门者 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程, ...

  6. Java开发工程师面试经验总集

    置顶个交流群 文章觉得海星的话,可以来群里找桃子交流技术或者普通乱聊= = 挂群:820080257 文档链接:[腾讯文档]Java开发工程师 https://docs.qq.com/doc/DQlZ ...

  7. 数字海南Java开发工程师实习生面试全过程及反思

    2020-12-7 数字海南Java开发工程师实习生面试全过程及试后反思 记录下人生第一次投递简历,正规实习求职面试,以及前前后后的准备与遇到的问题. 目录 2020-12-7 数字海南Java开发工 ...

  8. 【面试总结】【远光软件】【java开发工程师】

    前段时间参加了珠海远光的java开发工程师面试,本人第一次面试,没有经验加准备不充分,惨败.在这里做一下总结: 缺乏自信 这可能是最重要的原因之一.因为准备不充分以及面试经验缺乏,导致自己无比紧张而且 ...

  9. 欢聚时代java面试面经_欢聚时代(YY)校园招聘一面面经-java开发工程师

    欢聚时代(YY)校园招聘一面面经-java开发工程师 发布于 2014-10-20 00:01:59 | 398 次阅读 | 评论: 0 | 来源: 网友投递 欢聚时代欢聚时代成立于2005年4月,于 ...

最新文章

  1. JMeter测试TCP/IP Socket应用的性能
  2. JPA的entityManager的find、getReference、persisit、remove方法的使用
  3. C语言写一个简单的数学程序,用C语言计算简单的数学式子
  4. c语言中常用的预处理命令6,C语言的预处理命令
  5. Oracle用户system解锁
  6. 关于django的模板
  7. php psockopen,基于php socket(fsockopen)的应用实例分析
  8. 数据结构之链表及其Java实现_数据结构之链表及其Java实现
  9. LinkedHashMap+Iterable实现LRU算法(简单易懂)
  10. 罗技 连点 脚本_罗技G宣布与《英雄联盟》合作 推出一系列游戏周边产品
  11. 商城开发-用户管理模块(2)
  12. 阿里云ddns过程记录
  13. 手机版minecraft java材质_材质包 - Minecraft Wiki,最详细的官方我的世界百科
  14. 阿里云服务器被挖矿的解决方法
  15. excel计算式自动计算_计算macd 分解步骤一步一步详细计算macd 用excel计算macd
  16. 记录一次Win10莫名其妙被植入一个恶意软件
  17. 开关、按钮开关、自锁开关内部结构
  18. 为何两个完全一样的字符串相比较却不一样
  19. Android:三种Adapter的使用方法
  20. 第六讲 Linux字符设备驱动1

热门文章

  1. LED驱动电源有哪些特点
  2. 定位程序Crash常用工具和方法
  3. Yocto开发篇 | Ubuntu构建与体验Poky发行版(Yocto 3.1版本)
  4. linux .la文件的作用,.la文件 和 libtool
  5. 关于Unity碰撞检测失败的冷门原因
  6. 后台管理系统--首页及登录认证
  7. 中国电信增值业务是什么?一类和二类的区别是什么?
  8. 对话农民丰收节交易会-万祥军:龙头企业谋定社会责任
  9. 前端入门——JavaScript
  10. 纳什均衡+帕雷托最优-通俗解答