package com.my.module;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
/**
* Queue和List测试
*/
public class QueueTest {
private BlockingQueue<TestData> testQueue = new LinkedBlockingQueue<TestData>();
public static void main(String[] args) {
int nowSecond=TimeUtils.getCurrentSecond();
QueueTest q=new QueueTest();
TestData t1=new TestData(nowSecond+3, "1111111111111111111111111");
TestData t2=new TestData(nowSecond+5, "2222222222222222222222222");
TestData t3=new TestData(nowSecond+4, "33333333333333333333333333");
TestData t4=new TestData(nowSecond+6, "44444444444444444444444444");
TestData t5=new TestData(nowSecond+10, "5555555555555555555555555");
try {
q.testQueue.put(t1);
q.testQueue.put(t2);
q.testQueue.put(t3);
q.testQueue.put(t4);
q.testQueue.put(t5);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
q.MyRun();
}
public void MyRun() {
while(!testQueue.isEmpty()) {
TestData md = testQueue.peek();
if (md == null) {
break;
}
int intervalTime=md.getFinishTime()-TimeUtils.getCurrentSecond();
if (intervalTime>0) {
try {
System.out.println(md.getFinishTime()+" 阻塞 "+intervalTime);
Thread.sleep(intervalTime*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
continue;
}
System.out.println("执行方法");
TestData pmd = testQueue.poll();
if (pmd != null) {
System.out.println(pmd.toString());
}
}
}
}
package com.my.module;
public class TestData {
private int finishTime = 0;
private String data = "";
public TestData(int finishTime, String data) {
this.finishTime = finishTime;
this.data = data;
}
public int getFinishTime() {
return finishTime;
}
public void setFinishTime(int finishTime) {
this.finishTime = finishTime;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
@Override
public String toString() {
return "TestData [finishTime=" + finishTime + ", data=" + data + "]";
}
}