带重新填充的java线程安全队列
我不确定我的代理是否完全线程安全。
我不想使用ConcurrentLinkedQueue
而不是LinkedList
,因为我必须确保队列不是空的,所以getProxy()已经同步
“ActainProxy()”函数由几个线程访问
这足以保证线程安全吗?这种方法正确吗
private static final Queue<Proxy> PROXIES = new LinkedList();
public static Proxy obtainProxy() {
boolean isProxyOk = false;
Proxy proxy = null;
do {
proxy = getProxy();
isProxyOk = testProxy(proxy);
} while (!isProxyOk);
return proxy;
}
private synchronized static Proxy getProxy() {
if(PROXIES.isEmpty()) prepareProxies();
return PROXIES.poll();
}
private static void prepareProxies() {
PROXIES.add(new Proxy());
PROXIES.add(new Proxy());
PROXIES.add(new Proxy());
}
编辑:我的目标是创建一个队列,为请求它的每个线程提供一个代理项
共 (0) 个答案