gpt4 book ai didi

java - java中使用可重入锁进行锁定同步

转载 作者:行者123 更新时间:2023-12-02 06:27:04 29 4
gpt4 key购买 nike

我有一个用java制作的应用程序,它使用可重入全局锁,我遇到了这样的问题:

一个线程正在获取可重入全局锁,并假设在该时间间隔内保持锁 30 秒,并进行一些操作。在此时间间隔内,所有其他线程都被阻塞。我的问题是我希望像 RMI 这样的一些线程有机会执行。

为了让其他线程在短时间内获取锁,什么是好的锁定策略或优化?

最佳答案

所以你基本上有一个应该在单线程环境中执行的作业队列。每次从此队列轮询之前,您都需要按优先级对其条目进行排序。

abstract class JobEntry<V> implements Callable<V>{
Date registeredAt;
long runEstimationMs;
JobType type;
}

因此,您可以为此条目提出一个权重函数,并根据它或实现Comparable对条目进行排序。

差不多就这样了。您可以将这些作业发送到单个线程的固定线程池。如果您需要中断它们,则需要取消 future,并且每个作业都应检查 Thread.interrupted() 状态。

这里最困难的部分是称重函数,构建它的一种可能方法是在您的系统上进行一组实验。

关于java - java中使用可重入锁进行锁定同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20425496/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com