今天看了一篇关于jdk中并发操作的文章:
http://www.ibm.com/developerworks/cn/java/j-lo-activeobject/#icomments
主要介绍了activeobject模式在java中的应用,带出了java.util.concurrent package中一些类的介绍,比如ScheduledExecutorService (结合了schedule和并发的功能)。
最近有关注java.util.concurrent这个package,发现好多东东平时都没怎么用,比如java.util.concurrent.atomic对一些对象的原子化包装,java.util.concurrent.locks提供一些锁的缺省实现,包括ReentrantLock, ReentrantReadWriteLock等,都是很好用的玩意。
说到这里,想到项目中用到的一些相关的工具:
在Spring中实现sheduling功能的quartz,可以支持crontab语法
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="scheduleJobTrigger" />
</list>
</property>
</bean>
<bean id="scheduleJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="scheduleJob" />
<property name="cronExpression">
<value>0 0 22 ? * MON-FRI</value>
</property>
</bean>
<bean id="scheduleJob"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="jobHandler" />
<property name="targetMethod" value="execute" />
</bean>
<bean name="jobHandler" class="com.jianda.MyClass">
</bean>
还有一个就是object pool的实现,用的是apache commons里的一个组件。
核心就是几个类:GenericObjectPool(GenericObjectPool.Config),PoolableObjectFactory(需要自己实现)
GenericObjectPool.Config poolConfig = new GenericObjectPool.Config();
// set value for poolConfig
//create a connnection pool
connectionPool = new GenericObjectPool(MyPoolableObjectFactory, poolConfig);
// get object from pool
MyObject objectInPool = (MyObject)connectionPool.borrowObject();
// return back to pool after fininshing using
connectionPool.returnObject(objectInPool);
得到一个体会,新技术一定要多学,多用,用了几次以后才能真正掌握它。