Synch Thread interne avec FOStream
Bonjour!
Je suis en train de me perdre dans la synchronisation du méthode appartenant à un gestionnaire de cache (type HIFO pour un peu frimer): quel objet mettre au verrou synchronized??? Le tutoriel de ®om ne m'aide pas plus que ça.... :( J'ai un chargement trop long pour les objets pas trop gros comme 4ko env. ...8O
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| private boolean swap(int pKey, Object pValue) {
final int key = pKey;
final Object value = pValue;
cacheDisk.put(key, new File(cacheDisk_dir + File.separator + "_cache"+hashCode()+key+'.'+cacheDisk_ext));
Thread t = new Thread(new Runnable() { public void run() {
try {
new ObjectOutputStream(new FileOutputStream((File)cacheDisk.get(key))).writeObject(value);
} catch(IOException e) { e.printStackTrace(); Thread.currentThread().interrupt(); }
}}, "T-cache-swap");
t.start();
synchronized (pValue) { // ça fait pas de différence avec "this"! ???
try {
t.join();
System.out.println(pKey + " swapped");
} catch(InterruptedException e) { return false; } finally { return true; }
}
} |