华为面试100题:java开发工程师(中)
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开发工程师(中)相关推荐
- 【面试】上海 java开发工程师/自动化测试开发工程师 面试题
推荐学习论坛,仅用于复习面试,不建议用来首次学习 https://www.bysocket.com/ 面试前必刷题 - Java面试题全集 https://blog.csdn.net/jackfrue ...
- 面试网易严选Java开发工程师,太真实了,直接凉凉(凉经)
点关注,不迷路:持续更新Java相关技术及资讯!!! 内容源于群友投稿!记录一次面试网易失败的经验,分享给大家,感谢支持! 前言 金九银十,金九都只剩下最后一天了,面试的有成功有凉凉的,今天分享一次面 ...
- 华为面试100题:java开发工程师(上)
jkd的组成结构 java的跨平台是通过jvm虚拟机实现的 java代码执行流程 首先java代码通过javac编译成.class文件,.class文件进入类装载子系统,装载进入运行时数据区,通过 ...
- 思源科技java面试_【企业招聘笔试真题】思源Java开发工程师笔试题
Java开发工程师笔试题 1.用最有效率的方法算出2乘以8等于几? 2.下面的程序输出结果是多少? 3.Import java.util.Date; 4.Public class Test exten ...
- Java入门基础及面试100题--初入门
Java入门基础及面试100题 注:适合应届毕业生或java初入门者 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程, ...
- Java开发工程师面试经验总集
置顶个交流群 文章觉得海星的话,可以来群里找桃子交流技术或者普通乱聊= = 挂群:820080257 文档链接:[腾讯文档]Java开发工程师 https://docs.qq.com/doc/DQlZ ...
- 数字海南Java开发工程师实习生面试全过程及反思
2020-12-7 数字海南Java开发工程师实习生面试全过程及试后反思 记录下人生第一次投递简历,正规实习求职面试,以及前前后后的准备与遇到的问题. 目录 2020-12-7 数字海南Java开发工 ...
- 【面试总结】【远光软件】【java开发工程师】
前段时间参加了珠海远光的java开发工程师面试,本人第一次面试,没有经验加准备不充分,惨败.在这里做一下总结: 缺乏自信 这可能是最重要的原因之一.因为准备不充分以及面试经验缺乏,导致自己无比紧张而且 ...
- 欢聚时代java面试面经_欢聚时代(YY)校园招聘一面面经-java开发工程师
欢聚时代(YY)校园招聘一面面经-java开发工程师 发布于 2014-10-20 00:01:59 | 398 次阅读 | 评论: 0 | 来源: 网友投递 欢聚时代欢聚时代成立于2005年4月,于 ...
最新文章
- JMeter测试TCP/IP Socket应用的性能
- JPA的entityManager的find、getReference、persisit、remove方法的使用
- C语言写一个简单的数学程序,用C语言计算简单的数学式子
- c语言中常用的预处理命令6,C语言的预处理命令
- Oracle用户system解锁
- 关于django的模板
- php psockopen,基于php socket(fsockopen)的应用实例分析
- 数据结构之链表及其Java实现_数据结构之链表及其Java实现
- LinkedHashMap+Iterable实现LRU算法(简单易懂)
- 罗技 连点 脚本_罗技G宣布与《英雄联盟》合作 推出一系列游戏周边产品
- 商城开发-用户管理模块(2)
- 阿里云ddns过程记录
- 手机版minecraft java材质_材质包 - Minecraft Wiki,最详细的官方我的世界百科
- 阿里云服务器被挖矿的解决方法
- excel计算式自动计算_计算macd 分解步骤一步一步详细计算macd 用excel计算macd
- 记录一次Win10莫名其妙被植入一个恶意软件
- 开关、按钮开关、自锁开关内部结构
- 为何两个完全一样的字符串相比较却不一样
- Android:三种Adapter的使用方法
- 第六讲 Linux字符设备驱动1