/*
* 練習問題17.4 p.406
* 刈り取りスレッドを修正して、すべての割り当てられたリソースが開放されるまで、シャットダウンの後も
* 生き続けるようにしなさい。
*/
package ch17.ex17_04;
public class ResourceImpl implements Resource
{
int keyHash;
boolean needsRelease = false;
ResourceImpl(Object key)
{
keyHash = System.identityHashCode(key);
// .. 外部リソースの設定
needsRelease = true;
}
public void use(Object key, Object... args)
{
if (System.identityHashCode(key) != keyHash)
{
throw new IllegalArgumentException("wrong key");
}
// ... リソースの使用 ...
}
public synchronized void release()
{
if (needsRelease)
{
needsRelease = false;
// ... リソースの解放 ...
}
}
}