并发
大鸡腿同学
SoftRpc contribuer; 21年拿到阿里淘系口头offer; 目前在某公司架构组搬砖,多多指教~
展开
-
线程安全与共享资源
转自http://ifeve.com/thread-safety/总结:局域变量储存在栈中,不是储存在共享堆中,是安全的。线程控制逃逸规则:如果一个资源的创建,使用,销毁都在同一个线程内完成,且永远不会脱离该线程的控制,则该资源的使用就是线程安全的。如果是共享资源,那么它的销毁不在同一个线程里面,是不安全的 ...转载 2019-01-31 12:43:48 · 140 阅读 · 0 评论 -
线程安全以及不可变性
转自http://ifeve.com/thread-safety-and-immutability/如果有引用对象的,是不安全的。因为它可能被改变了,引用对象。比如说在构造函数的时候就赋值,没有set方法,这是安全的。如果说有set方法,则引用对象会变化。 所以每次调用需要new新建一个对象...转载 2019-01-31 13:34:56 · 160 阅读 · 0 评论 -
Java内存模型
一般面试都会问到,所以多看看,多总结转自http://ifeve.com/java-memory-model-6/java内存由栈,本地方法栈,程序计数器,堆,方法区。栈是为了执行java方法,本地栈为了执行本地方法。我的理解是储存局部变量。堆的数据是共享的。方法区:保存类的信息,静态变量,常量 文中谈及变量的可见性,一般每个线程都有自己的线程栈,互相不影响。一旦变量是...转载 2019-01-31 18:22:00 · 133 阅读 · 0 评论 -
Java锁
转自http://ifeve.com/locks/之前我也总结过相关的博客,今天由于系统学习再一次总结一遍。Lock跟Synchronized可以让线程安全的措施,通过lock获得锁。unlock解除锁。在文中有一个概念:自旋锁自旋锁:一个线程在获取锁的时候,如果被其他线程获取锁了,它会循环等待,直到获得锁。public class Counter{public class...转载 2019-01-31 22:05:03 · 133 阅读 · 0 评论 -
java并发之阻塞队列BlockingQueue
从里面学到一个是Queue,一个是Deque.Queue是队列,一进一出,而Deque比较奇葩。可以两边进出的。接下来是BlockingQueue;@Test public void c() throws InterruptedException { BlockingQueue blockingQueue = new LinkedBlockingQueue(1...转载 2019-02-01 01:13:47 · 425 阅读 · 0 评论 -
java并发CAS操作
转自http://ifeve.com/compare-and-swap/CAS:比较、替换的一种技术,如果如果新值与我们期待的一样就替代成新值。文中举了这个例子class MyLock { private boolean locked = false; public boolean lock() { if(!locked) { ...转载 2019-02-01 19:49:50 · 172 阅读 · 0 评论 -
java jvm优化(一)
转自http://ifeve.com/jvm-optimize-1/java由堆来分配所需内存。java有3个代,年轻代、年老代、永久代垃圾回收:当堆的空间不足以存放新的对象时,这是需要分配内存,也就是垃圾回收启动。GC算法:引用计数器回收、跟踪回收下面转自http://www.importnew.com/13827.htmlGC种类:4种1.串行垃圾回收器2.并行...转载 2019-02-02 00:54:52 · 1140 阅读 · 0 评论 -
并发之CyclicBarrier
文章目录CyclicBarrier介绍CyclicBarrier与CounntDownLatch区别各自应用场景构造方法重要方法栗子参考资料CyclicBarrier介绍中文直译:回环阻碍。就是大家执行完相关的业务之后一起等到所有线程执行完,一起结束。CyclicBarrier与CounntDownLatch区别区别CyclicBarrier:所有线程一开始大家随便跑,执行业务各自逻辑,...原创 2019-10-08 14:36:31 · 114 阅读 · 0 评论