问题描述 在IT技术面试过程中,我们经常会遇到生产者消费者问题(Producer consumer problem), 这是多线程并发协作问题的经典案例。场景中包含三个对象,生产者(Producer),消费者(Consumer)以及一个固定大小的缓冲区(Buffer)。生产者的主要作用是不断生成数据 ...
分类:
编程语言 时间:
2019-11-12 17:22:22
阅读次数:
115
在线程并发执行的时候,我们需要保证临界资源的安全访问,防止线程争抢资源,造成数据二义性。 线程同步: 条件变量 为什么使用条件变量? 对临界资源的时序可控性,条件满足会通知其他等待操作临界资源的线程,类似信号。 场景:T-DAY展会排队参观/生产者消费者模型 条件变量是什么? 是一种同步机制,一个线 ...
分类:
编程语言 时间:
2019-11-12 16:04:29
阅读次数:
98
一、Python线程模块1、线程简介一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程本身不拥有系统资源,与进程内的其它线程共享进程的所有资源。一个进程中至少有一个线程,并作为程序的入口,即主线程,其它线程称为工作线程。多线程,是指从软件或者硬件上实现多个线程并发执行的技术。支持多线程能力的计算机因有硬件支持而能够在
分类:
编程语言 时间:
2019-11-11 21:53:53
阅读次数:
76
本文基于 "https://github.com/h2pl/Java Tutorial" 的总结 Java7 HashMap(数组+链表) Java7 ConcurrentHashMap(段(数组+链表)+ ReentrantLock) Java8 HashMap (数组+链表+红黑树) ( 如果链 ...
分类:
编程语言 时间:
2019-11-10 19:34:07
阅读次数:
73
本文基于 "https://github.com/h2pl/Java Tutorial" 的总结 ReentrantReadWriteLock(读写锁)源码分析 "BlockingQueu 阻塞队列" ArrayBlockingQueue(数组。有界) LinkedBlockingQueue(链表。 ...
分类:
编程语言 时间:
2019-11-10 14:00:04
阅读次数:
89
线程安全性是我们在进行Java并发编程的时候必须要先考虑清楚的一个问题。这个类在单线程环境下是没有问题的,那么我们就能确保它在多线程并发的情况下表现出正确的行为吗?我这个人,在没有副业之前,一心扑在工作上面,所以处理的蛮得心应手,心态也一直保持的不错;但有了副业之后,心态就变得像坐过山车一样。副业收入超过主业的时候,人特别亢奋,像打了鸡血一样;副业迟迟打不开局面的时候,人就变得惶惶不可终日。仿佛我
分类:
编程语言 时间:
2019-11-10 09:18:37
阅读次数:
83
本文基于 "https://github.com/h2pl/Java Tutorial" 的总结 多线程的优缺点 "多线程性能分析" 线程的状态 JMM(Java内存模型) "JMM 内存模型 与 volatile 关键字" volatile写 读的内存语义 锁释放和获取的内存语义 final 域的 ...
分类:
编程语言 时间:
2019-11-09 20:04:18
阅读次数:
123
问题描述:库存更新成负数 产生原因:由于多线程并发时每个下单线程判断是否超库存时,读到了数据库同样的值,都认为库存满足要求,都执行了下单扣库存的操作,结果就是库存被更新成了负数,实际下单量大于实际库存。 解决办法:1、可以通过java的sychronized关键字以及Lock API去加锁,这样实现 ...
分类:
数据库 时间:
2019-11-09 11:51:43
阅读次数:
277
锁的概念 ①、锁,在现实生活中是为我们想要隐藏于外界所使用的一种工具。 ②、在计算机中,是协调多个进程或线程并发访问某一资源的一种机制。 ③、在数据库当中,除了传统的计算资源(CPU、RAM、I/O等等)的争用之外,数据也是一种供许多用户共享访问的资源。 ④、如何保证数据并发访问的一致性、有效性,是 ...
分类:
数据库 时间:
2019-11-07 23:45:56
阅读次数:
110
问题(1)Phaser是什么?(2)Phaser具有哪些特性?(3)Phaser相对于CyclicBarrier和CountDownLatch的优势?简介Phaser,翻译为阶段,它适用于这样一种场景,一个大任务可以分为多个阶段完成,且每个阶段的任务可以多个线程并发执行,但是必须上一个阶段的任务都完成了才可以执行下一个阶段的任务。这种场景虽然使用CyclicBarrier或者CountryDown
分类:
编程语言 时间:
2019-11-05 09:27:10
阅读次数:
85