概述
我需要一个简单的锁,JavaME的超时(concurrent.lock的backport需要完整的Java 1.3) .
如果其他人已经为JavaME发布了经过测试的锁定代码,我宁愿使用它 .
锁定是众所周知的困难,所以我想我会问以下代码是否理智:
public class TimedLock {
private volatile Thread holder = null;
private Vector waiters = new Vector();
public void lock(long ms) {
synchronized (this) {
if (holder == null) {
holder = Thread.currentThread();
return;
}
}
waiters.addElement(Thread.currentThread());
try {
Thread.sleep(ms);
throw new RuntimeException("timeout while waiting for lock");
} catch (InterruptedException e) {
return;
}
}
public synchronized void unlock() {
if (holder != Thread.currentThread()) {
throw new RuntimeException("attempting to release unheld lock");
}
// if there is at least one waiter, wake it
if (waiters.size() > 0) {
holder = (Thread) waiters.elementAt(waiters.size() - 1);
waiters.removeElementAt(waiters.size() - 1);
holder.interrupt();
} else {
holder = null;
}
}
}
最后
以上就是悦耳荷花为你收集整理的java me学习_锁定JavaME的全部内容,希望文章能够帮你解决java me学习_锁定JavaME所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复