君子博学而日参省乎己 则知明而行无过矣

博客园 首页 新随笔 联系 订阅 管理
上一页 1 ··· 52 53 54 55 56 57 58 59 60 ··· 107 下一页

2012年10月28日 #

摘要: 项目的后台要求在更改密码后发送邮件通知用户,为了避免发送邮件时程序对用户操作的阻塞,之前中文版中使用了线程来发送邮件,而在英文版中,我决定使用JMS来异步发送邮件,让用户更改密码的操作和发送邮件的操作更进一步解耦,也在实际环境中试试JMS。 我们的环境是Spring 2.5, Tomcat 5.5,使用ActiveMQ来实现JMS传送和接收。 首先,我们在Spring中加入ActiveMQ Broker的配置: <bean id="broker" class="org.apache.activemq.xbean.BrokerFactoryBean" 阅读全文
posted @ 2012-10-28 23:06 刺猬的温驯 阅读(785) 评论(0) 推荐(0)

摘要: java5引入了很多新的并发容器和工具,极大的简化了并发程序的编写。本文先介绍Collections.synchronizedXXX工厂方法创建的同步容器的不足,再介绍ConcurrentHashMap,CopyOnWriterArrayList,BlockingQueue,CountDownLatch,Semaphore,CyclicBarrier和显示锁类。一、引言所有的并发问题都来源于如何协调访问并发状态,可变状态越少,并发控制也就越容易容易。没有可变状态的对象永远是现成安全。对有可变状态的对象的并发访问必须进行加锁,对每个方法都加锁并不能保证并发访问一定处于一致的状态。在构建并发程序的 阅读全文
posted @ 2012-10-28 17:22 刺猬的温驯 阅读(316) 评论(0) 推荐(0)

摘要: Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,CompletionService,Future,Callable等。他们的关系为:并发编程的一种编程方式是把任务拆分为一些列的小任务,即Runnable,然后在提交给一个Executor执行,Executor.execute(Runnalbe)。Executor在执行时使用内部的线程池完成操作。一、创建线程池Executors类,提供了一系列工厂方法用于创先线程池,返回的线程池都实现了ExecutorService 阅读全文
posted @ 2012-10-28 17:21 刺猬的温驯 阅读(290) 评论(0) 推荐(1)

摘要: 这里提供两种在指定时间后启动线程的方法。一是通过java.util.concurrent.DelayQueue实现;二是通过java.util.concurrent.ScheduledThreadPoolExecutor实现。1. java.util.concurrent.DelayQueue类DelayQueue是一个无界阻塞队列,只有在延迟期满时才能从中提取元素。它接受实现Delayed接口的实例作为元素。<<interface>>Delayed.javapackagejava.util.concurrent;importjava.util.*;publicinte 阅读全文
posted @ 2012-10-28 17:00 刺猬的温驯 阅读(566) 评论(0) 推荐(0)

摘要: 1.类Executors此类中提供的一些方法有:1.1 public static ExecutorService newCachedThreadPool()创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。对于执行很多短期异步任务的程序而言,这些线程池通常可提高程序性能。1.2 public static ExecutorService newFixedThreadPool(intnThreads)创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程。1.3 public static ExecutorService newSingleThreadE 阅读全文
posted @ 2012-10-28 16:48 刺猬的温驯 阅读(253) 评论(0) 推荐(0)

摘要: 我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,当然也有一些开源的框架提供了这些功能,但是这些依然没有JDK自带的功能使用起来方便。而当针对高质量Java多线程并发程序设计时,为防止死蹦等现象的出现,比如使用java之前的wait()、notify()和synchronized等,每每需要考虑性能、死锁、公平性、资源管理以及如何避免线程安全性方面带来的危害等诸多因素,往往会采用一些较为复杂的安全策略,加重了程序员的开发负担.万幸的是,在JDK1.5出现之后,Sun大神(Doug Lea)终于为我们这些可怜的小程序员推出了java.util.conc 阅读全文
posted @ 2012-10-28 16:28 刺猬的温驯 阅读(377) 评论(0) 推荐(0)

2012年10月27日 #

摘要: 输入输出是指应用程序与外部设备及其他计算机进行数据交流的操作,如读写硬盘数据、向显示器输出数据、通过网络读取其他节点的数据等。任何一种编程语言必须拥有输入输出的处理方式,Java语言也不例外。Java语言的输入输出数据是以流的形式出现的,并且Java提供了大量的类来对流进行操作,从而实现了输入输出功能。所谓流是指同一台计算机或网络中不同计算机之间有序运动着的数据序列,Java把这些不同来源和目标的数据都统一抽象为数据流。数据流可分为输入流和输出流,输入流代表从其他设备流入计算机的数据序列,输出流代表从计算机流向外部设备的数据序列。流序列中的数据可以是没有进行加工的原始数据(二进制字节数据),也 阅读全文
posted @ 2012-10-27 14:21 刺猬的温驯 阅读(406) 评论(0) 推荐(0)

2012年10月26日 #

摘要: 转载http://www.itzhai.com/java-based-notebook-object-serialization-and-deserialization-of-its-implementation-and-use-of.html1、对象持久化:将一个对象保存到永久存储的设备上的机制。2、对象序列化(serialization):将对象转换为字节流保存起来是把一个对象的状态写入一个字节流的过程。在需要时还原此对象的机制。在一个对象图表中,如果试图序列化一个顶层的对象,所有其他引用的对象都被循环的定位和序列化。同样,在反序列化过程中,所有的这些对象以及他们的引用都被正确恢复。2.1 阅读全文
posted @ 2012-10-26 11:02 刺猬的温驯 阅读(682) 评论(0) 推荐(0)

摘要: 转载http://www.itzhai.com/java-based-notebook-the-object-of-deep-and-shallow-copy-copy-copy-implement-the-cloneable-interface-serializing-deep-deep-copy.html深复制与浅复制:浅复制(deep clone):被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。深复制(shallow clone):被复制对象的所有变量都含有与原来的对象相同的值,除去 阅读全文
posted @ 2012-10-26 10:55 刺猬的温驯 阅读(312) 评论(0) 推荐(0)

2012年10月25日 #

摘要: SingletonClient.getHttpClient().execute(post2,localContext);这里是采用httpclient组件提交http请求,需要导入相应的依赖<!--httpclient--><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.2.1</version></dependency><de 阅读全文
posted @ 2012-10-25 12:59 刺猬的温驯 阅读(1367) 评论(0) 推荐(0)

上一页 1 ··· 52 53 54 55 56 57 58 59 60 ··· 107 下一页