本文共 1592 字,大约阅读时间需要 5 分钟。
今天看了一篇关于jdk中并发操作的文章:
主要介绍了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);
得到一个体会,新技术一定要多学,多用,用了几次以后才能真正掌握它。
转载地址:http://altwn.baihongyu.com/