- 浏览: 16449 次
- 性别:
- 来自: 杭州
最新评论
-
richard_lee:
smallbug_vip 写道spiniper 写 ...
java异步计算场景应用 -
smallbug_vip:
spiniper 写道我只想问一句楼主,你使用的多线程处理和你 ...
java异步计算场景应用 -
spiniper:
我只想问一句楼主,你使用的多线程处理和你单线程的处理真的有解决 ...
java异步计算场景应用
文章列表
最近项目中遇到一个业务场景:
将当期数据库中的表迁移到另外一个数据库中,为满足迁移效率需要进行并发数据迁移。对每一数据表可以启动不同的线程同时迁移数据。迁移完成后,同步更新对应该迁移任务的状态字段。
最先想到的是使用java中并发工具类:同步屏障CyclicBarrier。
CyclicBarrier的字面意思是可循环使用(Cyclic)的屏障(Barrier)。它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续运行。
CyclicBarrier可以用于多线程计算数据,最后合并计算结果的场景。
一、通过Cycl ...
Spring与dubbo集成实例化两次的问题
- 博客分类:
- dubbo
最近研究dubbo,在与spring集成的时候,eclipse启动web服务的时候发现消费者实例总是被实例化两次,spring中bean默认都是singleton,不可能实例化多个对象。dubbo管理界面显示如下:
在网上查了相关的资料发现是由于在web.xml中这段配置导致的:
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet&l ...
看到一道关于多线程题:如何实现两个线程交替打印数字0-9?
首先我们会想到要实现交替打印,那么就要其中一个执行的时候,另外一个处于等待状态,当该线程执行完的时候,唤醒另外一个。如此执行就可实现。
我们可以通过wait和notify对线程进行状态控制,并且我们需要两个监视器分别对这两个线程的wait和notify控制。如果用synchronized的wait和notify,实现起来比较麻烦(只有wait在相同的锁和监视器上的线程,才能被唤醒),因为对于同一个锁,我们需要不同的监视器进行控制wait和notify。这种情况下,Condition可以比较好的支持.
Condition:能够更加精细 ...
我们在处理并发操作的时候经常使用锁机制,大家常用的synchronized和Lock.
1.二者使用方式有所不同:
synchronized可以在方法前或者代码块中,synchronized是java中的内置锁,由jvm控制锁的释放。
Lock使用在代码块中,加锁之后需要显示的释放,一般在finally中释放锁,主要有两种锁ReentrantLock和ReentrantReadWriteLock。
2.二者都是互斥锁,也就是一次只能有一个对象持有该锁。
3.synchronized原始采用的是CPU悲观锁机制,即线程获得的是独占锁。独占锁意味着其 他线程只能依靠阻 ...
最近在项目中应用了ActiveMQ消息中间件,这里简单说一下应用背景和与Spring的集成。
背景:多个功能模块或者系统间需要进行消息传递时,短时间内推送的信息较多,且对目标模块或者系统处理消息时间要求不是很高的时候,可以考虑采用MQ消息中间件进行处理。而开源的ActiveMQ相比于IBM WebSphere MQ是足以胜任中小系统的解决方案。
下面介绍一下ActiveMQ 5.6.0版本在Windows下的安装及如何与Spring集成使用。
Windows下的安装:
1、下载地址:http://archive.apache.org/dist/activemq/apach ...
最近一个同事在使用Eclipse搭建初始WEB项目环境的时候,在后台的Servlet代码上修改之后,Debug调试的时候,修改的代码始终没有生效,并且总是会走到注释的那部分程序。我过去看了一下,说肯定是你写的程序没有被重新编译 ...
最近在几个WEB项目中都用到了Memcached,简单说一下使用该缓存方案的一些优点。其中,应用背景是有大量数据需要进行读操作,并且用户对查询信息内容的响应时间要求很高。
关于memcached,官方是这样描述的:Memcached 是 ...
最近我们的高并发平台遇到用户高峰运行时总会出现CPU占用率过高的问题,经过一段时间的排查及查阅相关的JVM资料,发现在程序中有这样一块代码引起了注意:
首先我们需要了解一下JVM的垃圾收集算法:
1、标记-清除算法
最基础的收集算法是“标记-清除”算法,顾名思义,算法分为“标记”和“清除”两个阶段:首先标记出所有要回收的对象,在标记完成之后统一回收所有被标记的对象。
缺点:一是时间问题,标记和清除两个过程效率都不高。二是空间问题,标记清除之后会产生大量不连续的内存碎片。
2、复制算法
该算法的思想是将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当这块的内存用完了,则将还存活的 ...