互斥与同步的信号量关系 1.1软件 1.2硬件 屏蔽中断 机器指令(test set) 如果任何期间都可以中断就不是硬件 缺点 盲等占用处理器的时间 饥饿现象 死锁 1.3信号量 semaphores 进程之间用来通信的标志 有进程要等待信号量的话就阻塞自己 等待和信号量都不可中断 有一个队列 wa ...
分类:
其他好文 时间:
2019-03-25 20:46:47
阅读次数:
210
synchronized死锁 package com.thread.demo.deadlock; public class DeadLock { private static Object lock1 = new Object(); private static Object lock2 = new... ...
分类:
编程语言 时间:
2019-03-24 17:28:18
阅读次数:
209
1. 如果用户的请求比较费时,可以考虑将用户的请求信息放到队列中,立即返回给用户处理中等信息,这样可以给用户比较流畅的体验,后端可以利用单独的服务消费消息,做到了解耦,提高了并发能力。 2. 本文使用jdk为我们提供的阻塞队列api,来实现一个基于内存的简单消息队列。主要涉及的接口BlockingQ ...
分类:
编程语言 时间:
2019-03-20 01:22:21
阅读次数:
486
转自--https://wsmajunfeng.iteye.com/blog/1629354,感谢整理,复制过来做个记录 前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的 ...
分类:
其他好文 时间:
2019-03-06 16:32:28
阅读次数:
163
谈到阻塞,相信大家都不会陌生了。阻塞的应用场景真的多得不要不要的,比如生产-消费模式,限流统计等等。什么ArrayBlockingQueue、LinkedBlockingQueue、DelayQueue等等,都是阻塞队列的实现啊,多简单!阻塞,一般有两个特性很亮眼:1.不耗CPU等待;2.线程安全;额,要这么说也OK的。毕竟,我们遇到的问题,到这里就够解决了。但是有没有想过,这容器的阻塞又是如何实
分类:
编程语言 时间:
2019-03-02 12:21:04
阅读次数:
120
java队列 接口Queue类在java.util包,定义了以下6个方法 详细查看官方文档https://docs.oracle.com/javase/7/docs/api/java/util/Queue.html 什么是阻塞队列 BlockingQueue 队列是一种数据结构,它的特点是先进先出( ...
分类:
编程语言 时间:
2019-02-15 15:17:26
阅读次数:
210
1. ArrayBlockingQueue简介 在多线程编程过程中,为了业务解耦和架构设计,经常会使用并发容器用于存储多线程间的共享数据,这样不仅可以保证线程安全,还可以简化各个线程操作。例如在“生产者-消费者”问题中,会使用阻塞队列(BlockingQueue)作为数据容器,关于BlockingQ ...
分类:
数据库 时间:
2019-02-08 20:00:17
阅读次数:
236
一、基本介绍 ArrayBlcokingQueue,LinkedBlockingQueue是jdk中内置的阻塞队列,网上对它们的分析已经很多,主要有以下几点: 1、底层实现机制不同,ArrayBlcokingQueue是基于数组的,LinkedBlockingQueue是基于链表的; 2、初始化方式 ...
分类:
数据库 时间:
2019-02-03 19:31:00
阅读次数:
187
在Java并发场景中,会涉及到各种各样的锁如公平锁,乐观锁,悲观锁等等,这篇文章介绍各种锁的分类: 公平锁/非公平锁 可重入锁 独享锁/共享锁 乐观锁/悲观锁 分段锁 自旋锁 01.乐观锁 vs 悲观锁 乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度,在Java和数据库中都有此概念对 ...
分类:
编程语言 时间:
2019-01-28 23:53:00
阅读次数:
227
实现生产者与消费者模式 目录 生产者与消费者模式 什么是生产者消费者模式 生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队 ...
分类:
其他好文 时间:
2019-01-28 18:21:15
阅读次数:
125