0
点赞
收藏
分享

微信扫一扫

DelayQueue,网吧记时

天悦哥 2023-02-19 阅读 68


Wangmin:

package com.mhm.delayQueue;

import java.util.concurrent.Delayed;
import java.util.concurrent.TimeUnit;

public class Wangmin implements Delayed {

private int id;

private String name;
// 下机时间
private long endtime;

private TimeUnit timeUnit = TimeUnit.SECONDS;

public int getId() {
return this.id;
}

public String getName() {
return this.name;
}


public Wangmin(int id, String name, long endtime) {
this.id = id;
this.name = name;
this.endtime = endtime;

}


@Override
public int compareTo(Delayed arg0) {
Wangmin wm = (Wangmin)arg0;
long d = this.getDelay(this.timeUnit) - wm.getDelay(this.timeUnit);
if (d > 0) {
return 1;
} else if (d == 0) {
return 0;
} else {
return -1;
}
}

@Override
public long getDelay(TimeUnit arg0) {
// return unit.convert(submitTime - System.nanoTime(), TimeUnit.NANOSECONDS);
long flag = this.endtime - System.currentTimeMillis();
// System.out.println(this.name + ", " + flag);
return flag;
}
}





wangba:

package com.mhm.delayQueue;

import java.util.concurrent.DelayQueue;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class Wangba implements Runnable {
private static final Logger logger = LogManager.getLogger("Wangba");

private DelayQueue<Wangmin> wmQueye = new DelayQueue<Wangmin>();

public boolean yinye = true;

public void shangji(int id, String name, int money) {
Wangmin wm = new Wangmin(id, name, 1000*money + System.currentTimeMillis());
logger.debug(name + ", 上机" + money + "秒");
this.wmQueye.add(wm);
}

public void xiaji(Wangmin wm) {
logger.debug(wm.getName() + ", 下机");
}


@Override
public void run() {
while(yinye) {
Wangmin wm;
try {
// 会按排序取出元素
wm = wmQueye.take();
xiaji(wm);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}


public static void main(String[] args) {
logger.debug("开始营业");
Wangba wb = new Wangba();
Thread shangwang = new Thread(wb);
shangwang.start();

wb.shangji(8, "444", 10);
wb.shangji(10, "111", 1);
wb.shangji(5, "222", 5);
wb.shangji(20, "333", 2);

}

}





举报

相关推荐

0 条评论