java程序排队找人系统_寻找一个令人惊讶的并发Java程序

由于我正在编写一个专注于并发方面的分析器,所以我正在使用Java中的同步机制来寻找一个很好的人工例子。我的分析器使可见的一些与线程相关的操作;例如:

调用通知/等待

线程改变其状态

>一个线程与另一个线程竞争监视器锁

>一个线程在与另一个线程竞争之后已经获取了一个监视器锁

>衡量每种方法的执行时间

>哪个线程访问了一定的方法和频率

>等

所以我正在寻找,是一个Java程序,似乎是乍一看,但执行时,你开始怀疑结果。我希望我的分析器可能能够检测到在后台发生了什么。

为了弄清楚自己,我给你一个例子,Brian Goetz的Java并发实践书给出了用于学习原因的“有毒”代码示例。

@NotThreadSafe

public class ListHelper {

public List list =

Collections.synchronizedList(new ArrayList());

...

public synchronized boolean putIfAbsent(E x) {

boolean absent = !list.contains(x);

if (absent)

list.add(x);

return absent;

}

}

这是通过putIfAbsent方法来扩展一个线程安全的类。由于列表是同步的,而putIfAbsent使用另一个锁来保护状态作为列表中定义的方法。

分析器可以显示使用的监视器锁和用户的惊喜(或不…),用户将看到有两个可能的监视器锁而不是一个。

我不喜欢这个例子,但是我不会问,如果我已经有一堆很好的例子。

但是它们只是指断开的并发程序。我也在寻找线程安全的实现,但是它们并不明显是线程安全的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值