
多线程
hellboy0621
怕什么真理无穷,进一寸有一寸的欢喜。
展开
-
线程安全之原子操作 待续~
原子操作,可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割而只执行其中一部分(不可中断性),将整个操作视为一个整体,资源在该次操作中保持一致,这是原子性的核心特征。CAS机制compare and swap,属于硬件同步原语,处理器提供了基本内存操作的原子性保证。CAS操作,需要输入两个数值,一个旧值一个新值,在操作期间先比较下旧值有没有发生变化,如果没有发生变化,才交换成新值;如果发生了变化,则不交换。使用Java中Unsafe类实现CAS机制:impor原创 2020-05-19 08:01:03 · 147 阅读 · 0 评论 -
获取线程信息
// 获取 Java 线程管理 MXBeanThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();// 不需要获取同步的 monitor 和 synchronizer 信息,仅获取线程和线程堆栈信息ThreadInfo[] threadInfos = threadMXBean.dumpAllThreads(false, false);// 遍历线程信息,仅打印线程 ID 和线程名称信息for (ThreadInfo thr.原创 2020-05-19 07:31:19 · 413 阅读 · 0 评论 -
线程安全之可见性问题
1、线程安全概念临界区:无法被多个线程同时访问的公共资源。 竞态条件:可能发生在临界区内的特殊条件。 共享资源:被多个线程读取或修改的资源。 线程安全: 如果一段代码是线程安全的,则不包含竞态条件。 只有当多个线程更新共享资源时,才会发生竞态条件。 栈封闭时,不会在线程间共享的变量,都是线程安全的。 局部变量引用本身不共享,但是引用的对象存储在共享堆中。 如果方法内创建的对象,只是在方法中传递,并且不对其他线程可用,也是线程安全的。 判定规则:如果创建、使用和处理资源,永远不原创 2020-05-16 12:47:08 · 393 阅读 · 0 评论