sách gpt4 ai đã đi

Khóa JavaME

In lại 作者:塔克拉玛干 更新时间:2023-11-02 18:58:52 25 4
mua khóa gpt4 Nike

我需要一个简单的锁,JavaME 超时(concurrent.lock 的反向移植需要完整的 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; } }}

1 Câu trả lời

您正在开发 API。不要在公共(public)对象上同步。

如果有人实例化您的 TimedLock 之一并在其上同步,那么它将停止按您期望的方式工作。

TimedLock 需要一个内部私有(private)对象来实现同步。

关于java - JavaME 锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9616667/

25 4 0
Bài viết được đề xuất: android - 连接充电器时在 Android 上自动开机
Bài viết được đề xuất: Java,返回新的 MyException : anti-pattern?
Bài viết được đề xuất: android - 为 android 寻找一个好的 datepicker 日历
Bài viết được đề xuất: java - 如何在 JLabel 中插入 JPanel?
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com