缓存类:
package com.zit.test;
import java.util.concurrent.BlockingDeque;
import java.util.concurrent.LinkedBlockingDeque;
public enum Cache {
INSTANCE;
public BlockingDeque list = 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 classTestCache1 {
@PostConstructpublic voidmethod1() {new Thread(newRunnable() {
@Overridepublic voidrun() {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 classTestCache2 {
@PostConstructpublic voidmethod2() {new Thread(newRunnable() {
@Overridepublic voidrun() {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类,没有效果