-4

如何编写一个只公开 20 个包含两个方法的对象的类,borrowObject并且returnObject代码必须是线程安全的。还要编写一个方法来获取 Live 的数量ObjectsObjects当前由其他类使用)。

我可以borrowObject使用一个计数器来编写方法。但是如何编写returnObject. 当客户端类调用该方法时,对象将被销毁。如何实现。覆盖 finalize 方法也不保证对象将不再在堆中。

4

3 回答 3

0

在后台使用一个 ArrayBlockingQueue 预填充大小为 20 个成员,并在调用借用时从队列中取出,并在调用返回时推送,并且活动计数为 20 减去队列大小...

于 2013-04-27T15:33:29.657 回答
0

您需要静态类成员作为实例的计数器。20 个实例也保存在一个数组中。保持构造函数私有。然后实现创建实例的工厂方法,该方法将控制计数器成员并将新实例放入数组中。实现一种方法来处理对象,并更新计数器和数组引用。

于 2013-04-27T15:41:26.213 回答
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--;
    }
}

你在找这个吗?

于 2013-04-27T15:41:46.390 回答