
Java并发
李家少年
这个作者很懒,什么都没留下…
展开
-
exp:并发处理 -规范
1.【强制】获取单例对象需要保证线程安全,其中的方法也要保证线程安全。 说明:资源驱动类、工具类、单例工厂类都需要注意。 2.【强制】创建线程或线程池时请指定有意义的线程名称,方便出错时回溯。 正例: public class TimerTaskThread extends Thread {public TimerTaskThread()...转载 2018-08-02 15:10:06 · 816 阅读 · 0 评论 -
4、并发基础
用JMX来查看Java程序包含哪些线程:import java.lang.management.ManagementFactory;import java.lang.management.ThreadInfo;import java.lang.management.ThreadMXBean;public class MultiThread{ public static void main原创 2017-05-03 09:33:22 · 275 阅读 · 0 评论 -
3、Java内存模型
从源代码到指令序列的重排序: 在执行程序时,为了提高性能,编译器和处理器常常会对指令做重排序。重排序分3种类型:1)编译器优化的重排序。编译器在不改变单线程程序语义的前提下,可以重新安排语句的执行顺序。 2)指令级并行的重排序。现代处理器采用了指令级并行技术(Instruction-Level Parallelism,ILP)来将多条指令重叠执行。如果不存在数据依赖性,处理器可以改变语句对应机原创 2017-05-02 21:19:52 · 295 阅读 · 0 评论 -
1、并发编程的艺术
多线程切换的上下文切换非常耗时。减少上下文切换的方法有无锁并发编程、CAS算法、使用最少线程和使用协程。 ·无锁并发编程。多线程竞争锁时,会引起上下文切换,所以多线程处理数据时,可以用一些办法来避免使用锁,如将数据的ID按照Hash算法取模分段,不同的线程处理不同段的数据。 ·CAS算法。Java的Atomic包使用CAS算法来更新数据,而不需要加锁。 ·使用最少线程。避免创建不需要转载 2017-04-05 21:07:44 · 508 阅读 · 0 评论 -
2、Java并发机制的底层实现原理
volatile 如果一个字段被声明成volatile,Java线程内存模型确保所有线程看到这个变量的值是一致的。synchronizedJava SE 1.6为了减少获得锁和释放锁带来的性能消耗,引入了“偏向锁”和“轻量级锁”,在Java SE 1.6中,锁一共有4种状态,级别从低到高依次是:无锁状态、偏向锁状态、轻量级锁状态和重量级锁状态,这几个状态会随着竞争情况逐渐升级。锁可以升级但不能降级原创 2017-05-02 09:26:31 · 253 阅读 · 0 评论 -
线程基础总结
在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口。例1:自己写个线程类class Thread1 extends Thread{ private String name; public Thread1(String name) { this.name=name; } public void run() {原创 2017-04-02 23:40:26 · 304 阅读 · 0 评论 -
java内存模型
Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。并发领域的关键问题:线程之间的通信和同步 通信:在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。 在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐转载 2017-04-02 21:04:04 · 261 阅读 · 0 评论 -
3 对象的共享
11原创 2016-12-25 17:33:30 · 380 阅读 · 0 评论 -
2 线程安全性
稳健的并发程序,须正确使用线程和锁。java中主要同步机制是关键字synchronized,是一种独占的加锁。 “同步”还包括:volatile类型的变量,显示锁(Explicit Lock),原子变量。 线程安全性:当多个线程访问某个类时,该类始终表现正确的行为,称这个类是线程安全的。原创 2016-12-23 22:33:44 · 279 阅读 · 0 评论 -
ex:并发编程经(1)
ConcurrentHashMap是支持并发的,但是如下代码有啥问题?private final Map<String, RateLimiter> limiterMap = new ConcurrentHashMap<>();// 并发使用的方法public void someMethod(){ if (!limiterMap.containsKe原创 2018-10-14 21:59:05 · 172 阅读 · 0 评论