使用锁能解决并发时线程安全性,但锁的代价比较大,而且降低性能。有些时候可以使用原子类(juc atomic包中的原子类)。还有一些其他的非加锁式并发处理方式,我写这篇文章来源于 "Java中有哪些无锁技术来解决并发问题" 的思考。 1.原子类场景 2.原子类分类 3.原子类实现原理 4.原子类使用d ...
分类:
编程语言 时间:
2020-01-22 18:10:33
阅读次数:
69
前言 分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细 ...
分类:
其他好文 时间:
2020-01-19 11:09:07
阅读次数:
68
并发与并行 并发:指两个或多个事件在同一时间段内发生。 并行:指两个或多个事件在同一时刻发生(同时发生)。 进程与线程 进程: 是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一 ...
分类:
编程语言 时间:
2020-01-19 09:15:32
阅读次数:
91
Spark SQL:数据库 Spark Streaming:流计算框架 GraphX:图计算框架 使用语言开发: SCALA语言学习(与Java完全兼容) 编程范式: 1,命令式语言:C,C++,Java...基于冯.诺依曼体系结构 2,函数式语言:充分利用多核CPU多线程并发能力 基于λ演算,并发 ...
分类:
其他好文 时间:
2020-01-14 23:47:05
阅读次数:
92
前言 并发编程几乎是所有互联网公司面试必问的问题,并发编程是Java程序员最重要的技能之一,也是最难掌握的一种技能。它要求编程者对计算机最底层的运作原理有深刻的理解,同时要求编程者逻辑清晰、思维缜密,这样才能写出高效、安全、可靠的多线程并发程序。 关于Java并发编程的知识总结了个思维导图,分享给大 ...
分类:
编程语言 时间:
2020-01-12 18:08:39
阅读次数:
108
例如,用于DMA交易的高容量和低延迟电子交易系统通常是并发的。大多数情况下,他们专注于微秒延迟,这就是为什么拥有如何有效地最小化延迟和提高吞吐量知识是如此重要。 这些是我最喜欢的关于Java的线程面试问题。我没有提供这些线程访谈问题的答案,但我会尽可能给你一个提示。我会更新帖子就详细的答案,就像我最 ...
分类:
编程语言 时间:
2020-01-09 13:28:59
阅读次数:
132
实际工作中,经常会遇到多线程并发时的类似抢购的功能,本篇描述一个简单的redis分布式锁实现的多线程抢票功能。 直接上代码。首先按照慣例,給出一個错误的示范: 我们可以看看,当20个线程一起来抢10张票的时候,会发生什么事。 package com.tiger.utils; public class ...
分类:
编程语言 时间:
2020-01-06 23:04:29
阅读次数:
117
本章内容: 1.死锁 2.多线程并发最佳实践(如何安全并发) 3.Spring与线程安全 4.HashMap与ConcurrentHashMap深入分析 一、死锁 1.产生必要条件 (1)互斥条件:进程要求对所分配的资源(如打印机)进?排他性控制,即在?段时间内某资源仅为?个进程所占有。此时若有其他 ...
分类:
编程语言 时间:
2019-12-27 22:08:21
阅读次数:
98
1.多线程并发 from threading import Thread import time def func(n): time.sleep(1) print(n) for i in range(10): t = Thread(target=func,args=(i,)) #将函数注册进子线程, ...
分类:
编程语言 时间:
2019-12-27 21:51:45
阅读次数:
75
实验十七 线程同步控制 实验时间 2018-12-10 第一部分:理论知识 1、多线程并发执行中的问题 ◆多个线程相对执行的顺序是不确定的。 ◆线程执行顺序的不确定性会产生执行结果的不确定性。 ◆在多线程对共享数据操作时常常会产生这种不确定性。 2、线程的同步 -多线程并发运行不确定性问题解决方案: ...
分类:
编程语言 时间:
2019-12-23 20:50:33
阅读次数:
107