文章分类 -  java

上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 62 下一页
摘要:同步容器 Java常用的容器有ArrayList、LinkedList、HashMap等等,这些容器都是非线程安全的。 如果有多个线程并发地访问这些容器时,就会出现问题。 因此,在编写程序时,必须要求程序员手动地在任何访问到这些容器的地方进行同步处理,这样导致在使用这些容器的时候非常地不方便。 所以 阅读全文
posted @ 2017-05-28 17:49 天涯海角路 阅读(85) 评论(0) 推荐(0)
摘要:目录 读者写者问题 信号量解决读者写者问题 Linux下信号量API 读者优先 写者优先 读写锁解决读者写者问题 Linux下读写锁API 实现 references 目录 读者写者问题 信号量解决读者写者问题 Linux下信号量API 读者优先 写者优先 读写锁解决读者写者问题 Linux下读写锁 阅读全文
posted @ 2017-05-28 17:39 天涯海角路 阅读(1100) 评论(0) 推荐(0)
摘要:两种互斥锁机制: 1、synchronized 2、ReentrantLock ReentrantLock是jdk5的新特性,采用ReentrantLock可以完全替代替换synchronized传统的锁机制,而且采用ReentrantLock的方式更加面向对象,也更加灵活,网上有很多关于对比两者锁 阅读全文
posted @ 2017-05-28 17:28 天涯海角路 阅读(232) 评论(0) 推荐(0)
摘要:摘要: Java实现生产者消费者问题与读者写者问题 1、生产者消费者问题 生产者消费者问题是研究多线程程序时绕不开的经典问题之一,它描述是有一块缓冲区作为仓库,生产者可以将产品放入仓库,消费者则可以从仓库中取走产品。解决生产者/消费者问题的方法可分为两类:(1)采用某种机制保护生产者和消费者之间的同 阅读全文
posted @ 2017-05-28 17:19 天涯海角路 阅读(160) 评论(0) 推荐(0)
摘要:读者写者经典同步问题的原理算法就不再详细说了!下面给出Java并发写的几种实现,希望支持! 第一种实现:synchronized DateFile.java ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 阅读全文
posted @ 2017-05-28 17:16 天涯海角路 阅读(432) 评论(0) 推荐(0)
摘要:Lock比传统线程模型中的synchronized方式更加面向对象,与生活中的锁类似,锁本身也应该是一个对象。两个线程执行的代码片段要实现同步互斥的效果,它们必须用同一个Lock对象。 读写锁:分为读锁和写锁,多个读锁不互斥,读锁与写锁互斥,这是由jvm自己控制的,你只要上好相应的锁即可。如果你的代 阅读全文
posted @ 2017-05-28 17:11 天涯海角路 阅读(121) 评论(0) 推荐(0)
摘要:线程之间的同步,除了互斥(前面介绍的互斥锁)之外,还存在协作关系,下面我们就介绍一下java线程间常见的一些协作方式。 一、内置条件队列 正如每个Java对象都可以作为一个内置锁,每个对象也可以作为一个条件队列,称为内置条件队列,Object.wait()、notify()/notifyAll()构 阅读全文
posted @ 2017-05-28 17:03 天涯海角路 阅读(514) 评论(0) 推荐(0)
摘要:阻塞队列:线程安全 按 FIFO(先进先出)排序元素。队列的头部 是在队列中时间最长的元素。队列的尾部 是在队列中时间最短的元素。新元素插入到队列的尾部,并且队列检索操作会获得位于队列头部的元素。链接队列的吞吐量通常要高于基于数组的队列,但是在大多数并发应用程序中,其可预知的性能要低。 注意: 1、 阅读全文
posted @ 2017-05-28 17:03 天涯海角路 阅读(197) 评论(0) 推荐(0)
摘要:研究生阶段一直使用C++,到工作时,才接触到Java。写了这么多年的多线程程序,觉得对于互斥(注意,不是同步哦)的各种锁有必要做个总结。 这里我想将Windows,Linux和Java JVM三种环境中使用锁的环境及虽然将Windows,Linux和Java JVM放在一起比较是有些不合适的,但是对 阅读全文
posted @ 2017-05-28 17:00 天涯海角路 阅读(170) 评论(0) 推荐(0)
摘要:一:读写锁解决的场景问题 >数据的读取频率远远大于写的频率的场景,就可以使用读写锁。二:读写锁的结构 >用state一个变量。将其转化成二进制,前16位为高位,标记读线程获取锁的次数。后16位为低位,标记写线程获取锁的次数。 >读写锁需要解决的冲突:读/写冲突,写/写冲突。读/读之间无冲突。 >当有 阅读全文
posted @ 2017-05-28 16:58 天涯海角路 阅读(244) 评论(0) 推荐(0)
摘要:读写锁 ReadWriteLock 读写锁维护了一对相关的锁,一个用于只读操作,一个用于写入操作。只要没有writer,读取锁可以由多个reader线程同时保持。写入锁是独占的。 互斥锁一次只允许一个线程访问共享数据,哪怕进行的是只读操作;读写锁允许对共享数据进行更高级别的并发访问:对于写操作,一次 阅读全文
posted @ 2017-05-28 16:45 天涯海角路 阅读(120) 评论(0) 推荐(0)
摘要:本小节介绍锁释放Lock.unlock()。 Release/TryRelease unlock操作实际上就调用了AQS的release操作,释放持有的锁。 public final boolean release(int arg) { if (tryRelease(arg)) { Node h = 阅读全文
posted @ 2017-05-28 16:36 天涯海角路 阅读(122) 评论(0) 推荐(0)
摘要:在理解J.U.C原理以及锁机制之前,我们来介绍J.U.C框架最核心也是最复杂的一个基础类:java.util.concurrent.locks.AbstractQueuedSynchronizer。 AQS AbstractQueuedSynchronizer,简称AQS,是J.U.C最复杂的一个类 阅读全文
posted @ 2017-05-28 16:33 天涯海角路 阅读(147) 评论(0) 推荐(0)
摘要:这次说一下 JUC 中的同步器三个主要的成员:CountDownLatch、CyclicBarrier 和 Semaphore(不知道有没有初学者觉得这三个的名字不太好记)。这三个是 JUC 中较为常用的同步器,通过它们可以方便地实现很多线程之间协作的功能。(下面的代码出自 JDK 文档) Coun 阅读全文
posted @ 2017-05-28 16:20 天涯海角路 阅读(126) 评论(0) 推荐(0)
摘要:CountDownLatch 1、类介绍 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的 阅读全文
posted @ 2017-05-28 16:19 天涯海角路 阅读(202) 评论(0) 推荐(0)
摘要:java5之后的java.util.concurrent包是世界级并发大师Doug Lea的作品,里面主要实现了 今天我们主要介绍AbstractQueuedSynchronizer这个可以说是最核心的类,没有之一。整个concurrent包里,基本都直接或间接地用到了这个类。Doug Lea的这篇 阅读全文
posted @ 2017-05-28 16:17 天涯海角路 阅读(163) 评论(0) 推荐(0)
摘要:java5之后的java.util.concurrent包是世界级并发大师Doug Lea的作品,里面主要实现了 今天我们主要介绍atomic包下相关内容。 CAS atomic包下的类主要基于现代主流 CPU 都支持的一种指令,Compare and Swap(CAS),这个指令能为多线程编程带来 阅读全文
posted @ 2017-05-28 16:11 天涯海角路 阅读(152) 评论(0) 推荐(0)
摘要:作者:二青 个人站点:zhangerqing.cn 邮箱:xtfggef@gmail.com 微博:http://weibo.com/xtfggef Atomic简介 Atomic包是Java.util.concurrent下的另一个专门为线程安全设计的Java包,包含多个原子操作类。这个包里面提供 阅读全文
posted @ 2017-05-28 16:03 天涯海角路 阅读(168) 评论(0) 推荐(0)
摘要:我们知道在并发编程中,多个线程共享某个变量或者对象时,必须要进行同步。同步的包含两层作用:1)互斥访问(原子性);2)可见性;也就是多个线程对共享的变量互斥地访问,同时线程对共享变量的修改必须对其他线程可见,也就是所有线程访问到的都是最新的值。 1. volatile变量和volatile引用 vo 阅读全文
posted @ 2017-05-28 15:55 天涯海角路 阅读(257) 评论(0) 推荐(0)
摘要:非阻塞算法:使用底层的原子机器指令(例如比较并交换指令)代替锁来确保数据在并发访问中的一致性 应用于在操作系统和JVM中实现线程 / 进程调度机制、垃圾回收机制以及锁和其他并发数据结构 可伸缩性和活跃性上拥有巨大的优势,不存在死锁 原子变量:提供了与volatile类型变量相同的内存语义,并支持原子 阅读全文
posted @ 2017-05-28 15:53 天涯海角路 阅读(160) 评论(0) 推荐(0)

上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 62 下一页