/** * */ package ehcache; import java.io.File; import java.util.concurrent.TimeUnit; import org.ehcache.Cache; import org.ehcache.CacheManager; import org.ehcache.config.builders.CacheConfigurationBuilder; import org.ehcache.config.builders.CacheEventListenerConfigurationBuilder; import org.ehcache.config.builders.CacheManagerBuilder; import org.ehcache.config.builders.PooledExecutionServiceConfigurationBuilder; import org.ehcache.config.builders.ResourcePoolsBuilder; import org.ehcache.config.builders.WriteBehindConfigurationBuilder; import org.ehcache.config.units.EntryUnit; import org.ehcache.config.units.MemoryUnit; import org.ehcache.event.EventType; import org.ehcache.impl.config.persistence.CacheManagerPersistenceConfiguration; /** * @author dzh * @date Nov 11, 2016 6:49:56 PM * @since 1.0 */ public class TestThreadPool { public void dickPoolTest() { CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder() .using(PooledExecutionServiceConfigurationBuilder.newPooledExecutionServiceConfigurationBuilder() .defaultPool("dflt", 0, 10).pool("defaultDiskPool", 1, 3).pool("cache2Pool", 2, 2).build()) .with(new CacheManagerPersistenceConfiguration(new File(getStoragePath(), "myData"))) .withDefaultDiskStoreThreadPool("defaultDiskPool") .withCache("cache1", CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder.newResourcePoolsBuilder().heap(10, EntryUnit.ENTRIES).disk(10L, MemoryUnit.MB))) .withCache("cache2", CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder.newResourcePoolsBuilder().heap(10, EntryUnit.ENTRIES) .disk(10L, MemoryUnit.MB)) .withDiskStoreThreadPool("cache2Pool", 2)) .build(true); Cache<Long, String> cache1 = cacheManager.getCache("cache1", Long.class, String.class); Cache<Long, String> cache2 = cacheManager.getCache("cache2", Long.class, String.class); cacheManager.close(); } public void writeBehindTest() { CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder() .using(PooledExecutionServiceConfigurationBuilder.newPooledExecutionServiceConfigurationBuilder() .defaultPool("dflt", 0, 10).pool("defaultWriteBehindPool", 1, 3).pool("cache2Pool", 2, 2) .build()) .withDefaultWriteBehindThreadPool("defaultWriteBehindPool") .withCache("cache1", CacheConfigurationBuilder .newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder.newResourcePoolsBuilder().heap(10, EntryUnit.ENTRIES)) .withLoaderWriter(new SampleLoaderWriter<Long, String>(singletonMap(41L, "zero"))) .add(WriteBehindConfigurationBuilder.newBatchedWriteBehindConfiguration(1, TimeUnit.SECONDS, 3) .queueSize(3).concurrencyLevel(1))) .withCache("cache2", CacheConfigurationBuilder .newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder.newResourcePoolsBuilder().heap(10, EntryUnit.ENTRIES)) .withLoaderWriter(new SampleLoaderWriter<Long, String>(singletonMap(41L, "zero"))) .add(WriteBehindConfigurationBuilder .newBatchedWriteBehindConfiguration(1, TimeUnit.SECONDS, 3) .useThreadPool("cache2Pool").queueSize(3).concurrencyLevel(2))) .build(true); Cache<Long, String> cache1 = cacheManager.getCache("cache1", Long.class, String.class); Cache<Long, String> cache2 = cacheManager.getCache("cache2", Long.class, String.class); cacheManager.close(); } public void eventsTest() { CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder() .using(PooledExecutionServiceConfigurationBuilder.newPooledExecutionServiceConfigurationBuilder() .pool("defaultEventPool", 1, 3).pool("cache2Pool", 2, 2).build()) .withDefaultEventListenersThreadPool( "defaultEventPool") .withCache("cache1", CacheConfigurationBuilder .newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder.newResourcePoolsBuilder().heap(10, EntryUnit.ENTRIES)) .add(CacheEventListenerConfigurationBuilder.newEventListenerConfiguration( new ListenerObject(), EventType.CREATED, EventType.UPDATED))) .withCache("cache2", CacheConfigurationBuilder .newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder.newResourcePoolsBuilder().heap(10, EntryUnit.ENTRIES)) .add(CacheEventListenerConfigurationBuilder.newEventListenerConfiguration(new ListenerObject(), EventType.CREATED, EventType.UPDATED)) .withEventListenersThreadPool("cache2Pool")) .build(true); Cache<Long, String> cache1 = cacheManager.getCache("cache1", Long.class, String.class); Cache<Long, String> cache2 = cacheManager.getCache("cache2", Long.class, String.class); cacheManager.close(); } }