B 保持着一个锁,在 B 准备 sleep 或 wait 之前释放它,这样在这个锁上等待的 A 就开始运行了,A 运行完了就释放锁,B 醒来后又去拿锁。
不过你这想法不保险,比如 A 执行的时间超过 10 毫秒,那 B 下一次拿锁可以间隔了一个间距 (10ms) 而花去了仅 20 毫秒。
把你的需求用文字描述一下,比如为什么你需要这样来实现功能,达到什么目的,如果只从技术角度描述我们只知道你的设计而不知道业务需求,因此设计不一定是合适的。
用Timer类的方法
schedule(TimerTask task, long time)
安排在指定的时间执行指定的任务。这个方法只执行一次
schedule(TimerTask task, Date firstTime, long period)
安排指定的任务在指定的时间开始进行重复的固定延迟执行。