随笔分类 -  java并发

JMM内存模型,并发容器,并发tools,设计模式,同步处理,线程池等
摘要:问题:现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行 实现:使用Thread中的join方法实现 分析: Thread类中的join方法是用来同步的,底层其实是调用了 wait方法。先来看一下演示代码: package com.whh.concurrency 阅读全文
posted @ 2020-10-26 11:47 面壁者逻辑 阅读(560) 评论(0) 推荐(0)
摘要:5.重排序、 happens-before 一、指令重排 指令重排序: java语言规范规定JVM线程内部维持顺序化语义。即只要程序的最终结果与它顺序化情况的结果相等,那么指令的执行顺序可以与代码顺序不一致,此过程叫指令的重排序。 三种指令重排序: 编译器优化的重排序:编译器在不改变单线程程序语义的 阅读全文
posted @ 2020-10-10 13:47 面壁者逻辑 阅读(235) 评论(0) 推荐(0)
摘要:4.原子性、可见性,有序性 一、原子性 原子性是指: 一个操作是不可中断的,要么全部执行成功要么全部执行失败,有着“同生共死”的感觉。 volatile可以保证可见性和有序性,但不能保证原子性。 1. JMM 8个原子操作 在《java并发(三)-JMM内存模型和 volatile缓存一致性》,我们 阅读全文
posted @ 2020-10-10 13:44 面壁者逻辑 阅读(326) 评论(0) 推荐(0)
摘要:JMM内存模型和 volatile缓存一致性 一、 JMM内存模型 Java线程内存模型与CPU缓存模型类型,是基于CPU缓存模型来建立的,Java线程内存模型是标准化的,屏蔽了底层不同计算机的区别。 CPU缓存模型: JMM内存模型: 当多个线程共享一个变量时,会从主内存拷贝一份副本到自己线程的工 阅读全文
posted @ 2020-10-10 12:55 面壁者逻辑 阅读(429) 评论(0) 推荐(0)
摘要:2. Java线程基础 一、 创建新线程 1.1 继承Thread类 Thread t1 = new Thread(); t1.start(); start()方法可以创建一个新的线程,并让这个线程执行run()方法 Thread t2 = new Thread(); t2.run() 这种直接用r 阅读全文
posted @ 2020-10-10 12:49 面壁者逻辑 阅读(145) 评论(0) 推荐(0)
摘要:1. 并发的一些概念 一、并发优点 并发编程的形式可以将多核CPU的计算能力发挥到极致,性能得到提升。 面对复杂业务模型,并行程序会比串行程序更适应业务需求,而并发编程更能吻合这种业务拆分 。 需要掌握: 充分利用多核CPU的计算能力; 方便进行业务拆分,提升应用性能 二、并发缺点 频繁的上下文切换 阅读全文
posted @ 2020-10-10 12:47 面壁者逻辑 阅读(231) 评论(0) 推荐(0)