Java 1.多个线程同时读写,读线程的数量远远大于写线程,你认为应该如何解决并发的问题?你会选择加什么样的锁? 2.JAVA的AQS是否了了解,它是干嘛的? 3.除了synchronized关键字之外,你是怎么来保障线程安全的? 4.什么时候需要加volatile关键字?它能保证线程安全吗? 5. ...
分类:
其他好文 时间:
2018-08-18 10:28:40
阅读次数:
260
[原文链接] 一、概述 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的Reen ...
分类:
编程语言 时间:
2018-08-16 20:54:27
阅读次数:
172
一、引言在JDK1.5之前,一般是靠synchronized关键字来实现线程对共享变量的互斥访问。synchronized是在字节码上加指令,依赖于底层操作系统的Mutex Lock实现。而从JDK1.5以后java界的一位大神—— Doug Lea 开发了AbstractQueuedSynchro ...
分类:
编程语言 时间:
2018-08-11 22:03:43
阅读次数:
180
一、出现线程安全性问题的条件 ?在多线程的环境下 ?必须有共享资源 ?对共享资源进行非原子性操作 二、解决线程安全性问题的途径 ?synchronized (偏向锁,轻量级锁,重量级锁) ?volatile ?JDK提供的原子类 ?使用Lock(共享锁,排它锁) 三、认识的“*锁” ?偏向锁 Jav ...
分类:
编程语言 时间:
2018-08-11 21:58:09
阅读次数:
155
前言 CountDownLatch是一个闭锁实现,它可以使一个或者多个线程等待一组事件发生。它包含一个计数器,用来表示需要等待的事件数量,coutDown方法用于表示一个事件发生,计数器随之递减,而await方法等待计数器为0之前一直阻塞。它是基于AQS的共享锁来实现的,其中使用了较多的AQS的方法 ...
分类:
其他好文 时间:
2018-07-27 01:18:11
阅读次数:
171
锁, ReentrantLock, AQS, Condition ...
分类:
其他好文 时间:
2018-07-25 19:00:51
阅读次数:
132
在学完volatile和CAS之后,近几天在撸AbstractQueuedSynchronizer(AQS)的源代码,很多并发工具都是基于AQS来实现的,这也是并发专家Doug Lea的初衷,通过写一个这样的基础工具来提高j.u.c的灵活性。具体可以看这篇论文的一段原文,我摘录一下: As is w ...
分类:
其他好文 时间:
2018-07-22 16:56:49
阅读次数:
167
IP编址 1.IP(Internet Protocol 互联网协议协议) 2.网络层 3.IP报文头部 4位版本号:IP协议(IPv4)版本号位4 4位头部长度:标识头部有多少个4字节,即最大共15*4个字节 8位服务类型:包含一个4位优先权字段:最小延时,最大吞吐量,最高可靠性和最小费用。 16位 ...
分类:
其他好文 时间:
2018-07-18 14:08:50
阅读次数:
183
上一篇我们讲到了ReentrantLock通过使用AQS框架实现了tryAcquire、tryRelease方法,从ReentrantLock层面分析源码,本次我们将进一步深入AQS类,查看AQS底层是如何实现线程同步的。 1.acquire() 首先自然从加锁开始看起,从lock.lock调用AQ ...
分类:
编程语言 时间:
2018-07-17 23:20:42
阅读次数:
191