
Java并发编程
追赶的蜗牛
一个程序就是一个世界。。。
展开
-
使用Spring application对象存储全局变量,统计链接的点击量
application对象作为JSP的9大内置对象之一,实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了application对象的生命。它是ServletContext类的实例。原创 2015-12-09 01:22:30 · 25199 阅读 · 1 评论 -
深入分析ConcurrentHashMap
术语定义术语英文解释哈希算法hash algorithm是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。 哈希表hash table根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称转载 2016-02-19 01:07:59 · 1078 阅读 · 0 评论 -
高并发下商城秒杀活动的处理
秒杀抢购活动是现在很多商城常见的营销手段,小米抢购、淘宝的整点免单、聚划算等都是成功的例子。从简单处着手,秒杀是很好理解的:设置要秒杀的商品的数量,抢完为止。但是,实际应用中一瞬间的高并发压力、以及并发带来的负库存是要着重考虑。要避免负库存的出现,可以在数据库加锁,不管外部多少请求,都可以在数据库操作前给阻断。当然,这种思路可以用在流量不大的普通商品上,用在高并发的秒杀商品上显然是转载 2016-02-19 00:52:55 · 15738 阅读 · 1 评论 -
ConcurrentHashMap的锁分段技术
术语定义术语英文解释哈希算法hash algorithm是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。 哈希表hash table根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称转载 2016-02-14 22:58:56 · 34911 阅读 · 7 评论 -
并发容器ConcurrentHashMap与synchronized联合使用达到线程安全
最近做的项目中遇到一个问题:明明用了ConcurrentHashMap,可是始终线程不安全除去项目中的业务逻辑,简化后的代码如下:[java] view plain copypublic class Test40 { public static void main(String[] args) throws In转载 2016-02-14 22:54:43 · 6650 阅读 · 0 评论 -
解决Java多线程并发的计数器问题
import java.util.concurrent.atomic.AtomicInteger;public class Counter { public static int count = 0; static AtomicInteger atomic = new AtomicInteger(0); public synchronized static void inc(原创 2015-12-22 01:07:16 · 12895 阅读 · 1 评论 -
java中volatile关键字的含义--volatile并不能做到线程安全
在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。 synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synch转载 2015-12-22 00:52:08 · 859 阅读 · 0 评论 -
synchronized和AtomicInteger解决并发问题的性能比较
转自:http://blog.youkuaiyun.com/ufo2910628/article/details/39473059AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口,底层是有volatile修饰的转载 2015-12-22 00:29:30 · 7975 阅读 · 2 评论 -
Java并发编程:synchronized
Java并发编程:synchronized 虽然多线程编程极大地提高了效率,但是也会带来一定的隐患。比如说两个线程同时往一个数据库表中插入不重复的数据,就可能会导致数据库中插入了相同的数据。今天我们就来一起讨论下线程安全问题,以及Java中提供了什么机制来解决线程安全问题。 以下是本文的目录大纲: 一.什么时候会出现线程安全问题? 二.如何解决线程安全问题?转载 2015-12-09 23:51:27 · 613 阅读 · 0 评论 -
静态同步方法(static synchronizd)
Java语法规定,任何线程进入同步方法、同步代码块之前,必须先获取同步方法、同步代码块对应的同步监视器。对于同步代码块而言,程序必须为它显示的指定同步监视器(可为this也可以自定义Object类型的全局变量);对于同步非静态方法而言,该方法的同步监视器是this----即调用该方法的java对象;对于静态的同步方法而言,该方法的同步监视器不是this而是该类本身。原创 2015-12-16 22:41:06 · 3200 阅读 · 1 评论 -
Java并发编程:并发容器之ConcurrentHashMap
下面这部分内容转载自: http://www.haogongju.net/art/2350374 JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能。因为同步容器将所有对容器状态的访问都串行化了,这样保证了线程的安全性,所以这种方法的代价就是严重降低了并发性,当多个线程竞争容器时,吞吐量严重降低。因此Java5.0开转载 2016-02-19 01:13:24 · 1205 阅读 · 0 评论