栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

sleep、wait、start、run、线程安全等面试题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

sleep、wait、start、run、线程安全等面试题

文章目录

sleep() 和 wait() 有什么区别?Thread 类中的 start 和 run 方法有什么区别什么是线程安全? Vector 是一个线程安全类吗?简述一下你对线程池的理解Java 程序是如何执行的

sleep() 和 wait() 有什么区别?

sleep

是 Thread 类的类方法sleep 可以在任何地方使用sleep 会休眠当前线程指定时间 有各 long 类型参数 毫秒为单位,释放 cpu 资源,不释放对象锁,休眠时间一到自动苏醒继续执行 wait

是 Object 类的成员方法wait 只能用在同步代码块中 否则抛出异常 Exception in thread "Thread-0" java.lang.IllegalMonitorStateExceptionwait 方法会放弃持有的对象锁,进入等待队列,当该对象调用 notify或者notifyAll 方法后会竞争获取对象锁【等待队列处于等待运行状态】,进入运行jdk1.8 sleep 和 wait 均需要捕获 InterruptedException异常 Thread 类中的 start 和 run 方法有什么区别

系统通过调用线程类的 start 方法用来启动新线程,这个线程处于可运行状态。可以被 JVM 来调度执行,调度执行的其实就是 这个 run 方法,run 方法执行结束,该线程也会终止。直接调用 run 方法,则就是一个普通的 run 方法执行,和多线程没有关系了。 什么是线程安全? Vector 是一个线程安全类吗?

线程安全:多线程访问时,采用加锁机制,当一个线程访问某个类的某个数据时,进行保护,其它线程不能访问这个数据直到这个线程执行结束,其它线程才可使用。不会出现数据不一致或数据污染虽然 Vactor 的所有方法都具有 synchronized 关键字修饰,但是对于复合操作, Vector还是需要进行同步处理的【单个方法的原子性不能保证符合操作也具有原子性】。它这么做并没有解决多线程问题,反而使得概念混乱,性能差【组织编译器乱序】 简述一下你对线程池的理解

线程池的好处

降低资源消耗。通过利用已创建的线程降低线程创建和销毁造成的消耗提高响应速度。任务到达时不许等待线程创建就可以直接执行。提高线程的可管理性。统一进行线程分配、调优和监控 Java 程序是如何执行的

把 .java 文件编译成字节码文件即 .class 文件【编译器】JVM 类加载器加载字节码文件【类加载器】加载完成进行字节码校验【校验器】JVM解释器将字节码文件 翻译成对应系统的机器码去执行【此过程 有个 JIT 动态编译器 提高效率 】

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/704606.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号