摘要:
通过前面内容我们了解了synchronized,虽然JVM对它做了很多优化,但是它还是一个重量级的锁。而接下来要介绍的volatile则是轻量级的synchronized。 如果一个变量使用volatile,则它比使用synchronized的成本更加低,因为它不会引起线程上下文的切换和调度。 Ja 阅读全文
posted @ 2022-02-07 21:05
周文豪
阅读(189)
评论(0)
推荐(0)
摘要:
synchronized是重量级锁,效率不高。 但在jdk 1.6中对synchronize的实现进行了各种优化,使得它显得不是那么重了。jdk1.6对锁的实现引入了大量的优化,如自旋锁、适应性自旋锁、锁消除、锁粗化、偏向锁、轻量级锁等技术来减少锁操作的开销。 锁主要存在四种状态,依次是:无锁状态、 阅读全文
posted @ 2022-02-07 18:16
周文豪
阅读(101)
评论(0)
推荐(0)
摘要:
一、内存可见性 1、内存可见性介绍 可见性: 一个线程对共享变量值的修改,能够及时的被其他线程看到 共享变量: 如果一个变量在多个线程的工作内存中都存在副本,那么这个变量就是这几个线程的共享变量 线程 A 与线程 B 之间如要通信的话,必须要经历下面 2 个步骤: (1)、首先,线程 A 把本地内存 阅读全文
posted @ 2022-02-07 17:30
周文豪
阅读(643)
评论(0)
推荐(0)
摘要:
JVM内存结构、Java对象模型和Java内存模型,这就是三个截然不同的概念,而这三个概念很容易混淆。这里详细区别一下 一、JVM内存结构(5个部分) 我们都知道,Java代码是要运行在虚拟机上的,而虚拟机在执行Java程序的过程中会把所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途。 阅读全文
posted @ 2022-02-07 17:03
周文豪
阅读(390)
评论(0)
推荐(0)
摘要:
优先级priority:当线程需要竞争CPU资源时,优先级高的能分配更多的CPU资源。 现今操作系统基本采用分时的形式调度运行的线程,线程分配得到时间片的多少决定了线程使用处理器资源的多少,也对应了线程优先级这个概念。 分时调度:所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时 阅读全文
posted @ 2022-02-07 15:55
周文豪
阅读(233)
评论(0)
推荐(0)
摘要:
结束线程有以下三种方法: (1)设置退出标志,使线程正常退出。 (2)使用interrupt()方法中断线程。 (3)使用stop方法强行终止线程(不推荐使用Thread.stop, 这种终止线程运行的方法已经被废弃,使用它们是极端不安全的!) 一、使用退出标志 一般run()方法执行完,线程就会正 阅读全文
posted @ 2022-02-07 15:40
周文豪
阅读(229)
评论(0)
推荐(0)