1 Star 3 Fork 2

little_grees/concurrency

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
ListHelper.java 1.14 KB
一键复制 编辑 原始数据 按行查看 历史
package com.zyf.concurrency.chapter04;
import com.zyf.concurrency.annotations.NotThreadSafe;
import com.zyf.concurrency.annotations.ThreadSafe;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* create by yifeng
*/
public class ListHelper {
/**
* 非线程安全的“若没有则添加”(不要这么做)
* @param <E>
*/
@NotThreadSafe
class BadListHelper<E> {
public List<E> list = Collections.synchronizedList(new ArrayList<>());
public synchronized boolean putIfAbsent(E x) {
boolean absent = !list.contains(x);
if (absent)
list.add(x);
return absent;
}
}
/**
* 通过客户端加锁来实现“若没有则添加”
*/
@ThreadSafe
class GoodListHelper<E> {
public List<E> list = Collections.synchronizedList(new ArrayList<>());
public boolean putIfAbsent(E x) {
synchronized (list) {
boolean absent = !list.contains(x);
if (absent)
list.add(x);
return absent;
}
}
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/yfengJ/concurrency.git
git@gitee.com:yfengJ/concurrency.git
yfengJ
concurrency
concurrency
master

搜索帮助