比如说我有一个方法A() { System.out.println("123");}
有三个类要调用这个方法。
要求是当第一个类执行过这个方法之后。第二个类必须2分钟之后才能执行这个方法,第三个类必须等第二个类执行结束后2分钟再执行这个方法。然后第一个类在第三个类执行2分钟后再次执行这个方法,依次循环
这该如何实现呢。
判断执行方法
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 重口味恋 •上小清新 2011-12-09 23:08关注
你描述的场景也不是非常明确, 大概这样吧
[code="java"]
import java.util.Date;public class DelayLock {
private final Object lockObj = new Object(); // 锁对象private final long DELAY; // 间隔毫秒 private volatile long lastCompleteTime = -1; // 上次任务结束的时间 private volatile boolean running = false; // 当前是否有任务在执行 public DelayLock(int DELAY) { this.DELAY = DELAY; } public void lock() throws InterruptedException { synchronized (lockObj) { while(true) { if(running) { lockObj.wait(); } else if(System.currentTimeMillis() - DELAY < lastCompleteTime) { lockObj.wait(DELAY); } else { break; } } running = true; } } public void unlock() { synchronized (lockObj) { running = false; lastCompleteTime = System.currentTimeMillis(); lockObj.notifyAll(); } } public static class TestClass implements Runnable { private final DelayLock lock; private int index; public TestClass(DelayLock lock, int index) { this.lock = lock; this.index = index; } public void testMethod() throws InterruptedException { lock.lock(); try { System.out.println("Thread: " + index + ": begin. at: " + new Date()); Thread.sleep(1000); System.out.println("Thread: " + index + ": job done! at: " + new Date()); } finally { lock.unlock(); } } public void run() { try { testMethod(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } } public static void main(String[] args) { DelayLock lock = new DelayLock(5 * 1000); // 5秒钟 for(int i = 0; i < 5; ++i) { TestClass t = new TestClass(lock, i); new Thread(t).start(); } }
}
[/code]
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 ETLCloud 处理json多层级问题
- ¥15 matlab中使用gurobi时报错
- ¥15 这个主板怎么能扩出一两个sata口
- ¥15 不是,这到底错哪儿了😭
- ¥15 2020长安杯与连接网探
- ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
- ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
- ¥15 可见光定位matlab仿真
- ¥15 arduino 四自由度机械臂
- ¥15 wordpress 产品图片 GIF 没法显示