当前位置: 首页 > news >正文

淄博天一建设项目招标代理有限公司网站免费网站建设公司推荐

淄博天一建设项目招标代理有限公司网站,免费网站建设公司推荐,做广告的公司,cms网站开发网站模板1、多线程并发 1#xff09;多线程中 synchronized 锁升级的原理是什么#xff1f; synchronized 锁升级原理#xff1a;在锁对象的对象头里面有一个 threadid 字段#xff0c;在第一次访问的时候 threadid 为空#xff0c;jvm 让其持有偏向锁#xff0c;并将 threadid… 1、多线程并发 1多线程中 synchronized 锁升级的原理是什么 synchronized 锁升级原理在锁对象的对象头里面有一个 threadid 字段在第一次访问的时候 threadid 为空jvm 让其持有偏向锁并将 threadid 设置为其线程 id再次进入的时候会先判断 threadid 是否与其线程 id 一致如果一致则可以直接使用此对象如果不一致则升级偏向锁为 轻量级锁通过自旋循环一定次数来获取锁执行一定次数之后如果还没有正常获取到要使用的 对象此时就会把锁从轻量级升级为重量级锁此过程就构成了 synchronized 锁的升级。 锁的升级的目的锁升级是为了减低了锁带来的性能消耗。在 Java 6 之后优化 synchronized 的实现方 式使用了偏向锁升级为轻量级锁再升级到重量级锁的方式从而减低了锁带来的性能消耗。 偏向锁顾名思义它会偏向于第一个访问锁的线程如果在运行过程中同步锁只有一个线程访 问不存在多线程争用的情况则线程是不需要触发同步的减少加锁解锁的一些CAS操作比 如等待队列的一些CAS操作这种情况下就会给线程加一个偏向锁。 如果在运行过程中遇 到了其他线程抢占锁则持有偏向锁的线程会被挂起JVM会消除它身上的偏向锁将锁恢复到标 准的轻量级锁。 轻量级锁是由偏向所升级来的偏向锁运行在一个线程进入同步块的情况下当第二个线程加入锁 争用的时候轻量级锁就会升级为重量级锁 重量级锁是synchronized 是 Java 虚拟机中最为基础的锁实现。在这种状态下Java 虚拟机会阻 塞加锁失败的线程并且在目标锁被释放的时候唤醒这些线程。 2、线程池有什么优点 降低资源消耗重用存在的线程减少对象创建销毁的开销。 提高响应速度可有效的控制最大并发线程数提高系统资源的使用率同时避免过多资源竞争 避免堵塞。当任务到达时任务可以不需要的等到线程创建就能立即执行。 提高线程的可管理性线程是稀缺资源如果无限制的创建不仅会消耗系统资源还会降低系统 的稳定性使用线程池可以进行统一的分配调优和监控。 附加功能提供定时执行、定期执行、单线程、并发数控制等功能。 3、ThreadPoolExecutor饱和策略有哪些 如果当前同时运行的线程数量达到最大线程数量并且队列也已经被放满了任时ThreadPoolTaskExecutor 定 义一些策略: ThreadPoolExecutor.AbortPolicy抛出 RejectedExecutionException来拒绝新任务的处理。 ThreadPoolExecutor.CallerRunsPolicy调用执行自己的线程运行任务。您不会任务请求。但是 这种策略会降低对于新任务提交速度影响程序的整体性能。另外这个策略喜欢增加队列容量。 如果您的应用程序可以承受此延迟并且你不能任务丢弃任何一个任务请求的话你可以选择这个策 略 (当前线程调用线程池处理多线程任务线程池队列满了那么就会用当前调用多线程的线程即用户线程来执行当前需要执行的多线程任务影响性能但是不会丢失任务) ThreadPoolExecutor.DiscardPolicy不处理新任务直接丢弃掉。 ThreadPoolExecutor.DiscardOldestPolicy 此策略将丢弃最早的未处理的任务请求。 4、ThreadPoolExecutor线程池的执行原理 5、如何合理分配线程池大小? 要合理的分配线程池的大小要根据实际情况来定 简单的来说的话就是根据CPU密集和IO密集来 分配 什么是CPU密集 CPU密集的意思是该任务需要大量的运算而没有阻塞CPU一直全速运行。 CPU密集任务只有在真正的多核CPU上才可能得到加速(通过多线程)而在单核CPU上无论你开 几个模拟的多线程该任务都不可能得到加速因为CPU总的运算能力就那样。 什么是IO密集 IO密集型即该任务需要大量的IO即大量的阻塞。在单线程上运行IO密集型的任务会导致浪费 大量的CPU运算能力浪费在等待。所以在IO密集型任务中使用多线程可以大大的加速程序运行 即时在单核CPU上这种加速主要就是利用了被浪费掉的阻塞时间。 分配CPU和IO密集 1. CPU密集型时任务可以少配置线程数大概和机器的cpu核数相当这样可以使得每个线程都在 执行任务 2. IO密集型时大部分线程都阻塞故需要多配置线程数2*cpu核数 精确来说的话的话 从以下几个角度分析任务的特性 任务的性质CPU密集型任务、IO密集型任务、混合型任务。 任务的优先级高、中、低。 任务的执行时间长、中、短。 任务的依赖性是否依赖其他系统资源如数据库连接等。 可以得出一个结论 线程等待时间比CPU执行时间比例越高需要越多线程。 线程CPU执行时间比等待时间比例越高需要越少线程。
http://www.dnsts.com.cn/news/19571.html

相关文章:

  • 网站关键词优化费用张家港英文网站制作
  • 机关网站建设前期准备工作wordpress建站腾讯云
  • 做3d ppt模板下载网站云南做网站哪家好
  • 深圳科技网站建设家装设计图纸
  • 做网站需要一些什么东西智能锁网站建设关键词
  • 成都哪里有做网站的wordpress本地登录密码
  • 做网站首选智投未来1项目建设表态发言
  • 四平市城乡建设局网站免费企业建站系统源码
  • 网站建设维护管理下载百度免费
  • 网站流量数据郑州app软件定制开发
  • 成都鲜花网站建设建立网络平台要多少钱
  • 如何做交互式网站36氪国外做网站
  • 网站如何开启gzip压缩wordpress ck video
  • 百度云 免费 网站主机女人吃男人做床视频网站
  • 网站备案时间怎么查询seo公司优化排名
  • 泉州seo网站建设费用怎么样子做网站
  • 怎么做这个购物网站中国互联网金融协会官网
  • 做高端网站公司徐州做网站的公司哪家好
  • 数据管理网站模板中国机加工网
  • 做网站设计的公司叫什么微信小程序数据库搭建
  • 自己做的网站如何上传网上南康市建设局网站
  • python3 网站开发网站备案号在哪儿查询
  • 做网站导航多大字号地方门户网站建设方案
  • 关于网站建设的意见国际时事新闻2022最新
  • 深圳企业网站建设服务济南网络科技公司排名
  • 文件乱码了怎么恢复江西网站优化
  • 北京建设教育网站网站建设需要了解的
  • 手机端网站怎么做高唐网站制作
  • 免费网站优化怎么做wordpress+伪静态+403
  • 前端个人网站怎么做用数字做域名的网站