摘要:
前不久,刚学习了jms的简单入门,后面紧接着就做了一个关于jms的负载均衡的项目,做完之后颇有打通任督二脉的感觉,感觉很多之前不是很理解的东西,都有些理解了,比如服务器端的监听、具体的jms的使用等,收获有点大。流程如下图所示:客户端:xml配置,这里用到了两台服务器,connectionFactory便可以看出,因为传的是对象,用到了转换器<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans&q 阅读全文
2012年10月28日 #
摘要:
这几天刚学习了一下消息队列,一直苦于找不到很好很简单的上手资料,苦找几天的资料,自己终于把这一块搞的差不多理解了,下面是自己的学习小demo,仅供上手,大致理解怎么跑,方便那些和我一样苦苦找寻资料的用户吧,废话不多说,直接上代码:1、首先引入activeMQ和spring的jar包 ,直接上图上面的jar包第一个是activeMQ的,还有spring的commos-logging,spring综合包,里面包括了spring-jms,另外还要引入slf4j的两个包 (jar包见管理--文件中的 activeMQ所需jar包 如果不能看的,要么留下联系方式我看到了发给你们,要么网上找也好找 -.- 阅读全文
摘要:
转载http://huangrongyou.iteye.com/blog/1533129将已经有的MQ的Demo代码发送到博客上如何部署自己部署MQJML理论WSAD环境下JMS异步通信全攻略 (1) 学习其对JMS说明部分使用 Apache Geronimo 和 JMS 构建事件驱动的框架JMS 基本可靠性机制 和 事务机制配置参数:关于ActiveMQ的配置 好像还不错Activemq 安全机制以及稳定性研究 主要讲如何配置Active MQ教程ActiveMq官网ActiveMQ_in_Action_中文.pdf 中文版本的JSM教程Apache ActiveMQ教程ActiveMQ i 阅读全文
摘要:
项目的后台要求在更改密码后发送邮件通知用户,为了避免发送邮件时程序对用户操作的阻塞,之前中文版中使用了线程来发送邮件,而在英文版中,我决定使用JMS来异步发送邮件,让用户更改密码的操作和发送邮件的操作更进一步解耦,也在实际环境中试试JMS。 我们的环境是Spring 2.5, Tomcat 5.5,使用ActiveMQ来实现JMS传送和接收。 首先,我们在Spring中加入ActiveMQ Broker的配置: <bean id="broker" class="org.apache.activemq.xbean.BrokerFactoryBean" 阅读全文
摘要:
java5引入了很多新的并发容器和工具,极大的简化了并发程序的编写。本文先介绍Collections.synchronizedXXX工厂方法创建的同步容器的不足,再介绍ConcurrentHashMap,CopyOnWriterArrayList,BlockingQueue,CountDownLatch,Semaphore,CyclicBarrier和显示锁类。一、引言所有的并发问题都来源于如何协调访问并发状态,可变状态越少,并发控制也就越容易容易。没有可变状态的对象永远是现成安全。对有可变状态的对象的并发访问必须进行加锁,对每个方法都加锁并不能保证并发访问一定处于一致的状态。在构建并发程序的 阅读全文
摘要:
Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,CompletionService,Future,Callable等。他们的关系为:并发编程的一种编程方式是把任务拆分为一些列的小任务,即Runnable,然后在提交给一个Executor执行,Executor.execute(Runnalbe)。Executor在执行时使用内部的线程池完成操作。一、创建线程池Executors类,提供了一系列工厂方法用于创先线程池,返回的线程池都实现了ExecutorService 阅读全文
摘要:
这里提供两种在指定时间后启动线程的方法。一是通过java.util.concurrent.DelayQueue实现;二是通过java.util.concurrent.ScheduledThreadPoolExecutor实现。1. java.util.concurrent.DelayQueue类DelayQueue是一个无界阻塞队列,只有在延迟期满时才能从中提取元素。它接受实现Delayed接口的实例作为元素。<<interface>>Delayed.javapackagejava.util.concurrent;importjava.util.*;publicinte 阅读全文
摘要:
1.类Executors此类中提供的一些方法有:1.1 public static ExecutorService newCachedThreadPool()创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。对于执行很多短期异步任务的程序而言,这些线程池通常可提高程序性能。1.2 public static ExecutorService newFixedThreadPool(intnThreads)创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程。1.3 public static ExecutorService newSingleThreadE 阅读全文
摘要:
我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,当然也有一些开源的框架提供了这些功能,但是这些依然没有JDK自带的功能使用起来方便。而当针对高质量Java多线程并发程序设计时,为防止死蹦等现象的出现,比如使用java之前的wait()、notify()和synchronized等,每每需要考虑性能、死锁、公平性、资源管理以及如何避免线程安全性方面带来的危害等诸多因素,往往会采用一些较为复杂的安全策略,加重了程序员的开发负担.万幸的是,在JDK1.5出现之后,Sun大神(Doug Lea)终于为我们这些可怜的小程序员推出了java.util.conc 阅读全文