缓存类:
package com.zit.test;import java.util.concurrent.BlockingDeque;import java.util.concurrent.LinkedBlockingDeque;public enum Cache { INSTANCE; public BlockingDequelist = new LinkedBlockingDeque (); public void put(String str) { try { list.put(str); } catch (InterruptedException e) { e.printStackTrace(); } } public String take(){ String str = null; try { str = list.take(); } catch (InterruptedException e) { e.printStackTrace(); } return str; } public boolean isEmpty(){ return list.isEmpty(); }}
线程1:存数据
package com.zit.test;import javax.annotation.PostConstruct;import org.springframework.stereotype.Component;@Componentpublic class TestCache1 { @PostConstruct public void method1() { new Thread(new Runnable() { @Override public void run() { int i = 0; while(true) { Cache.INSTANCE.put("g" + i); i++; try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } },"ThreadPut").start(); }}
线程2:取数据
package com.zit.test;import javax.annotation.PostConstruct;import org.springframework.stereotype.Component;@Componentpublic class TestCache2 { @PostConstruct public void method2() { new Thread(new Runnable() { @Override public void run() { while(true) { if(Cache.INSTANCE.isEmpty()) { try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } continue; } String str = Cache.INSTANCE.take(); System.out.println(str); } } },"ThreadTake").start(); }}
启动Web工程,可见效果
奇怪的是,如果不在Web工程里,只是运行Java类,没有效果