问题描述 业务有一个需求,我把问题描述一下: 不知道这个问题有没有说清楚,没说清楚没关系,写一段测试代码: 简单说就是,传入一个IP,尽量构建一个全局唯一的字符串,针对字符串加锁。预期的结果是并发下,比如5条线程传入同一个IP,它们构建的锁都是字符串"XXX 192.168.1.1",那么这5条线程 ...
分类:
编程语言 时间:
2017-04-04 14:19:29
阅读次数:
276
前言 线程?为什么有了进程还需要线程呢,他们有什么区别?使用线程有什么优势呢?还有多线程编程的一些细节问题,如线程之间怎样同步、互斥,这些东西将在本文中介绍。我在某QQ群里见到这样一道面试题: 是否熟悉POSIX多线程编程技术?如熟悉,编写程序完成如下功能: 1)有一int型全局变量g_Flag初始 ...
分类:
编程语言 时间:
2017-04-04 12:24:29
阅读次数:
246
上次我们介绍了在单机、集群下高并发场景可以选择的一些方案,传送门:高并发场景之一般解决方案 但是也发现了一些问题,比如集群下使用ConcurrentQueue或加锁都不能解决问题,后来采用Redis队列也不能完全解决问题, 因为使用Redis要自己实现分布式锁 这次我们来了解一下一个专门处理队列的组 ...
分类:
其他好文 时间:
2017-04-02 19:27:56
阅读次数:
388
1双重加锁模式 2静态内部类 3枚举 由于java提供了反射机制,第一种和第二种方式通过反射机制仍然有可能生成多个实例 ...
分类:
其他好文 时间:
2017-04-02 18:37:46
阅读次数:
145
数据库对于程序猿来 并不陌生,但是数据库的锁你知道多少?数据库的锁直接影响数据性能,在大并发的前提下,怎么保证数据不被死锁,提高数据库性能?如何加锁,何时加锁,加什么锁,你可以通过hint手工强行指定,但大多是数据库系统自动决定的。这就是为什么我们可以不懂锁也可以写SQL。 下面我们来简单谈一谈数据 ...
分类:
数据库 时间:
2017-03-31 13:24:45
阅读次数:
219
本人小白,看到资料说ConcurrentHashMap是线程安全的,get过程不需要加锁,put是线程安全的,推荐高并发时使用.但是本人不清楚是否该map中存入的引用类型对象,对象属性变化也是否线程安全的,看了很多资料,貌似都没说明这一点,所以写代码测试一下, ...
分类:
编程语言 时间:
2017-03-30 23:16:44
阅读次数:
158
在多线程中,为了使数据保持一致性必须要对数据或是访问数据的函数加锁,在数据库中这是很常见的,但是在程序中由于大部分都是单线程的程序,所以没有加锁的必要,但是在多线程中,为了保持数据的同步,一定要加锁,好在Framework中已经为我们提供了三个加锁的机制,分别是Monitor类、Lock关键字和Mu ...
分类:
编程语言 时间:
2017-03-30 13:14:02
阅读次数:
157
Happens-Before规则 程序顺序规则。如果程序中操作A在操作B之前,那么在线程中A操作将在B操作之前执行。 监视器锁规则。在监视器锁上的解锁操作必须在同一个监视器锁上的加锁操作之前执行。 volatile变量规则。对volatile变量的写入操作必须在对该变量的读操作之前执行。 线程启动规 ...
分类:
移动开发 时间:
2017-03-30 10:25:33
阅读次数:
141
在看本文之前,请确保你已经了解了Oracle事务和锁的概念即其作用,不过不了解,请参考数据库事务的一致性和原子性浅析和Oracle TM锁和TX锁 1、提交事务 当执行使用commit语句可以提交事务.当执行了commit语句后,会确认事务的变化、结束事务、删除保存点、释放锁。在此之前,与当前事务相 ...
分类:
数据库 时间:
2017-03-29 11:27:37
阅读次数:
903
一、行锁概念及特点 1.概念:给单独的一行记录加锁,主要应用于innodb表存储引擎 2.特点:在innodb存储引擎中应用比较多,支持事务、开销大、加锁慢;会出现死锁;锁的粒度小,并发情况下,产生锁等待的概率比较低,所以支持 的并发数比较高。 二、数据库事务 1.概念:事务是一系列操作组成的工作单 ...
分类:
数据库 时间:
2017-03-28 00:01:02
阅读次数:
258