如何编写一个只暴露其20个包含两个方法borrowObject
和returnObject
的对象的类.Code必须是线程安全的。还要编写一个方法来获取实时数{{1} }(其他类目前正在使用Objects
)。
我可以使用一个计数器编写Objects
方法。但是如何编写borrowObject
。当客户端类调用该方法时,Object将被销毁。如何实现.Overriding finalize方法也不能保证Object不再在堆中。
答案 0 :(得分:0)
在预先填充大小为20个成员的后台使用ArrayBlockingQueue,并在调用借位时从队列中取出,并在调用return时按下,并且活动计数为20减去队列大小... < / p>
答案 1 :(得分:0)
您需要静态类成员作为实例的计数器。这20个实例也保存在一个数组中。保持构造函数私有。然后实现工厂方法来创建将控制计数器成员并在数组中放置新实例的实例。实现一种方法来响应对象,并更新计数器和数组引用。
答案 2 :(得分:0)
class TwentyOnly{
private static List<TwentyOnly> twenty= new ArrayList(20);
private static int counter=0;
private TwentyOnly(){
}
public static synchronized TwentyOnly borrow(){
if(counter<20){
twenty.add(0,new TwentyOnly());
counter++;
return twenty.get(0);
}
throw new RUntimeException("All Allowed instances allowed");
}
public static synchronized void returnObject(TwentyOnly t){
twenty.remove(t);
counter--;
}
}
你在找这个吗?