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