Tu as pensé à utiliser un système de cache existant avant de tout refaire à la main ?
Emmanuel
Franck wrote:
Bonjour,
J'ai jamais fait de multithreading en Java...
... et je mets en place un système de cache pour mon serveur d'applic ation Ce système va faire des sérialization/désérialization d'objets
Sachant que la classe gérant ce système ressemble grosso-modo à ç a :
public final class Cache {
public CacheItem getCacheItem(String key) { // Je désérialize }
public synchronized void setCacheItem(String key, CacheItem cacheIt em) { // Je sérialize } }
Comment être sur :
- qu'un thread va attendre qu'un autre ait finit d'ecrire un objet pour eventuellement l'ecraser (je pense que le motcle synchronized suffit ?)
- qu'un thread va attendre qu'un autre ait finit d'ecrire un fichie r pour le lire (là je sais pas du tout ...)
Merci d'avance
-- Franck Lefebure mailto:
Franck
Emmanuel Bourg wrote:
Tu as pensé à utiliser un système de cache existant avant de tout refaire à la main ?
Emmanuel
Oui, je m'inspire de http://actioncache.neteye.de/ pour faire du caching sur une appli struts
mais je ne veux pas cacher les pages en entier (pas pratique à cause des forward vers les views)
Donc en ce moment je m'oriente vers un caching des beans créés dans le controller par sérialization. Mais je suis un peu bloqué par la synchronisation des threads
j'essaye de m'inspirer de ce qu'il ont fait (classe de.neteye.actioncache.ReaderWriterLock) mais j'ai du mal à tout saisir.
-- Franck Lefebure mailto:
Emmanuel Bourg wrote:
Tu as pensé à utiliser un système de cache existant avant de tout
refaire à la main ?
Emmanuel
Oui, je m'inspire de http://actioncache.neteye.de/ pour faire du caching sur
une appli struts
mais je ne veux pas cacher les pages en entier (pas pratique à cause des
forward vers les views)
Donc en ce moment je m'oriente vers un caching des beans créés dans le
controller
par sérialization. Mais je suis un peu bloqué par la synchronisation des
threads
j'essaye de m'inspirer de ce qu'il ont fait (classe
de.neteye.actioncache.ReaderWriterLock)
mais j'ai du mal à tout saisir.
Tu as pensé à utiliser un système de cache existant avant de tout refaire à la main ?
Emmanuel
Oui, je m'inspire de http://actioncache.neteye.de/ pour faire du caching sur une appli struts
mais je ne veux pas cacher les pages en entier (pas pratique à cause des forward vers les views)
Donc en ce moment je m'oriente vers un caching des beans créés dans le controller par sérialization. Mais je suis un peu bloqué par la synchronisation des threads
j'essaye de m'inspirer de ce qu'il ont fait (classe de.neteye.actioncache.ReaderWriterLock) mais j'ai du mal à tout saisir.
-- Franck Lefebure mailto:
Emmanuel Bourg
Il existe des caches qui travaillent au niveau des objets, jettes y un coup d'oeil ça pourrait te faire gagner du temps :
OSCache http://www.opensymphony.com/oscache
JCS - Java Caching System http://jakarta.apache.org/turbine/jcs
Tu as pensé à utiliser un système de cache existant avant de tout refaire à la main ?
Emmanuel
Oui, je m'inspire de http://actioncache.neteye.de/ pour faire du cachin g sur une appli struts
mais je ne veux pas cacher les pages en entier (pas pratique à cause des forward vers les views)
Donc en ce moment je m'oriente vers un caching des beans créés dans le controller par sérialization. Mais je suis un peu bloqué par la synchronisatio n des threads
j'essaye de m'inspirer de ce qu'il ont fait (classe de.neteye.actioncache.ReaderWriterLock) mais j'ai du mal à tout saisir.
-- Franck Lefebure mailto:
Il existe des caches qui travaillent au niveau des objets, jettes y un
coup d'oeil ça pourrait te faire gagner du temps :
OSCache
http://www.opensymphony.com/oscache
JCS - Java Caching System
http://jakarta.apache.org/turbine/jcs
Tu as pensé à utiliser un système de cache existant avant de tout
refaire à la main ?
Emmanuel
Oui, je m'inspire de http://actioncache.neteye.de/ pour faire du cachin g sur
une appli struts
mais je ne veux pas cacher les pages en entier (pas pratique à cause des
forward vers les views)
Donc en ce moment je m'oriente vers un caching des beans créés dans le
controller
par sérialization. Mais je suis un peu bloqué par la synchronisatio n des
threads
j'essaye de m'inspirer de ce qu'il ont fait (classe
de.neteye.actioncache.ReaderWriterLock)
mais j'ai du mal à tout saisir.
Tu as pensé à utiliser un système de cache existant avant de tout refaire à la main ?
Emmanuel
Oui, je m'inspire de http://actioncache.neteye.de/ pour faire du cachin g sur une appli struts
mais je ne veux pas cacher les pages en entier (pas pratique à cause des forward vers les views)
Donc en ce moment je m'oriente vers un caching des beans créés dans le controller par sérialization. Mais je suis un peu bloqué par la synchronisatio n des threads
j'essaye de m'inspirer de ce qu'il ont fait (classe de.neteye.actioncache.ReaderWriterLock) mais j'ai du mal à tout saisir.
-- Franck Lefebure mailto:
Franck
Emmanuel Bourg wrote:
Il existe des caches qui travaillent au niveau des objets, jettes y un coup d'oeil ça pourrait te faire gagner du temps :
Merci, je regarde.
-- Franck Lefebure mailto:
Emmanuel Bourg wrote:
Il existe des caches qui travaillent au niveau des objets, jettes y un
coup d'oeil ça pourrait te faire gagner du temps :
Il existe des caches qui travaillent au niveau des objets, jettes y un coup d'oeil ça pourrait te faire gagner du temps :
Merci, je regarde.
-- Franck Lefebure mailto:
Franck
Ceci dit,
J'aimerais bien savoir comment en Java gérer proprement l'accès concurrent à un fichier (locks)
Sachant que : - je veux que plusieurs threads puissent lire un fichier simultanément. - je veux que les threads attendent lorsque qu'un autre modifie un fichier - je veux qu'un thread attende que les autres aient fini de le lire avant de le modifier.
Simple non ? et pourtant je ne vois pas de mécanisme natif dans le jdk pour faire ça.
Merci
-- Franck Lefebure mailto:
Ceci dit,
J'aimerais bien savoir comment en Java gérer
proprement l'accès concurrent à un fichier (locks)
Sachant que :
- je veux que plusieurs threads puissent lire un fichier simultanément.
- je veux que les threads attendent lorsque qu'un autre modifie un
fichier
- je veux qu'un thread attende que les autres aient fini de le lire
avant de le modifier.
Simple non ?
et pourtant je ne vois pas de mécanisme natif dans le jdk pour faire ça.
J'aimerais bien savoir comment en Java gérer proprement l'accès concurrent à un fichier (locks)
Sachant que : - je veux que plusieurs threads puissent lire un fichier simultanément. - je veux que les threads attendent lorsque qu'un autre modifie un fichier - je veux qu'un thread attende que les autres aient fini de le lire avant de le modifier.
Simple non ? et pourtant je ne vois pas de mécanisme natif dans le jdk pour faire ça.
Merci
-- Franck Lefebure mailto:
Emmanuel Bourg
C'est possible avec un FileLock dans le package java.nio : http://java.sun.com/j2se/1.4.2/docs/api/java/nio/channels/FileLock.html
Emmanuel
Franck wrote:
Ceci dit,
J'aimerais bien savoir comment en Java gérer proprement l'accès concurrent à un fichier (locks)
Sachant que : - je veux que plusieurs threads puissent lire un fichier simultané ment. - je veux que les threads attendent lorsque qu'un autre modifie un fichier - je veux qu'un thread attende que les autres aient fini de le lire avant de le modifier.
Simple non ? et pourtant je ne vois pas de mécanisme natif dans le jdk pour faire ça.
Merci
-- Franck Lefebure mailto:
C'est possible avec un FileLock dans le package java.nio :
http://java.sun.com/j2se/1.4.2/docs/api/java/nio/channels/FileLock.html
Emmanuel
Franck wrote:
Ceci dit,
J'aimerais bien savoir comment en Java gérer
proprement l'accès concurrent à un fichier (locks)
Sachant que :
- je veux que plusieurs threads puissent lire un fichier simultané ment.
- je veux que les threads attendent lorsque qu'un autre modifie un
fichier
- je veux qu'un thread attende que les autres aient fini de le lire
avant de le modifier.
Simple non ?
et pourtant je ne vois pas de mécanisme natif dans le jdk pour faire ça.
C'est possible avec un FileLock dans le package java.nio : http://java.sun.com/j2se/1.4.2/docs/api/java/nio/channels/FileLock.html
Emmanuel
Franck wrote:
Ceci dit,
J'aimerais bien savoir comment en Java gérer proprement l'accès concurrent à un fichier (locks)
Sachant que : - je veux que plusieurs threads puissent lire un fichier simultané ment. - je veux que les threads attendent lorsque qu'un autre modifie un fichier - je veux qu'un thread attende que les autres aient fini de le lire avant de le modifier.
Simple non ? et pourtant je ne vois pas de mécanisme natif dans le jdk pour faire ça.
Merci
-- Franck Lefebure mailto:
RaOuf
Je pense que je réponds une connerie, mais,pourquoi synchronized ca marche pas ???
"Franck" a écrit dans le message de news:
Bonjour,
J'ai jamais fait de multithreading en Java...
... et je mets en place un système de cache pour mon serveur d'application Ce système va faire des sérialization/désérialization d'objets
Sachant que la classe gérant ce système ressemble grosso-modo à ça :
public final class Cache {
public CacheItem getCacheItem(String key) { // Je désérialize }
public synchronized void setCacheItem(String key, CacheItem cacheItem) {
// Je sérialize } }
Comment être sur :
- qu'un thread va attendre qu'un autre ait finit d'ecrire un objet pour
eventuellement l'ecraser (je pense que le motcle synchronized suffit ?)
- qu'un thread va attendre qu'un autre ait finit d'ecrire un fichier pour le lire (là je sais pas du tout ...)
Merci d'avance
-- Franck Lefebure mailto:
Je pense que je réponds une connerie, mais,pourquoi synchronized ca marche
pas ???
"Franck" <flefebure2.remove@this.orangecaraibe.com> a écrit dans le message
de news: grrbob.mfn.ln@akira...
Bonjour,
J'ai jamais fait de multithreading en Java...
... et je mets en place un système de cache pour mon serveur d'application
Ce système va faire des sérialization/désérialization d'objets
Sachant que la classe gérant ce système ressemble grosso-modo à ça :
public final class Cache {
public CacheItem getCacheItem(String key) {
// Je désérialize
}
public synchronized void setCacheItem(String key, CacheItem cacheItem)
{
// Je sérialize
}
}
Comment être sur :
- qu'un thread va attendre qu'un autre ait finit d'ecrire un objet
pour
eventuellement l'ecraser (je pense que le motcle synchronized suffit ?)
- qu'un thread va attendre qu'un autre ait finit d'ecrire un fichier
pour le lire (là je sais pas du tout ...)