Voila, en lisant des bouts de code, je suis tombé sur cela :
private myClass(){}
public static myClass getInstance(){
if(myInstance==null){
myInstance = new DAOODBCFactory();
}
return myInstance;
}
Je vois pas bien l'utilité de mettre le constructeur en privé et de
créer une méthode public pour obtenir une instance.
A première vue, je pensais que cela éviter d'instancier plusieurs fois
le même objet, mais je n'en suis pas sur.
dans l'article d6fisk$knt$, Arnaud Berger à a écrit le 18/05/05 16:19 :
Pas besoin, les blocs statiques sont exécutés une seule fois, au chargement de la classe par le ClassLoader (je suppose) .
A bon? et si 2 deux threads ont besoin de de la classe au meme instant ou avant que l'init soit finie. Qui gere ce cas?
Kupee
Bruno CAUSSE wrote:
Pas besoin, les blocs statiques sont exécutés une seule fois, au chargement de la classe par le ClassLoader (je suppose) .
A bon? et si 2 deux threads ont besoin de de la classe au meme instant ou avant que l'init soit finie. Qui gere ce cas?
Ben si c'est le classloader il gère, d'ailleurs je pense pas qu'il charge 2 fois la meme classe si 2 threads veulent y accéder avant que le chargement de la classe soit fini. D'autre part sur quoi tu veux le synchroniser ton bloc static ? Le seul choix est de le synchroniser sur un champ static d'une classe, et pareil, qui te dis que cce champ sera pas instantié 2 fois pour les mêmes raisons ?
Bruno CAUSSE wrote:
Pas besoin, les blocs statiques sont exécutés une seule fois, au chargement
de la classe par le ClassLoader (je suppose) .
A bon? et si 2 deux threads ont besoin de de la classe au meme instant ou
avant que l'init soit finie. Qui gere ce cas?
Ben si c'est le classloader il gère, d'ailleurs je pense pas qu'il
charge 2 fois la meme classe si 2 threads veulent y accéder avant que le
chargement de la classe soit fini.
D'autre part sur quoi tu veux le synchroniser ton bloc static ?
Le seul choix est de le synchroniser sur un champ static d'une classe,
et pareil, qui te dis que cce champ sera pas instantié 2 fois pour les
mêmes raisons ?
Pas besoin, les blocs statiques sont exécutés une seule fois, au chargement de la classe par le ClassLoader (je suppose) .
A bon? et si 2 deux threads ont besoin de de la classe au meme instant ou avant que l'init soit finie. Qui gere ce cas?
Ben si c'est le classloader il gère, d'ailleurs je pense pas qu'il charge 2 fois la meme classe si 2 threads veulent y accéder avant que le chargement de la classe soit fini. D'autre part sur quoi tu veux le synchroniser ton bloc static ? Le seul choix est de le synchroniser sur un champ static d'une classe, et pareil, qui te dis que cce champ sera pas instantié 2 fois pour les mêmes raisons ?
Arnaud Berger
Avoir besoin de la classe ne signifie pas qu'elle est à nouveau chargée. Une classe n'est chargée dans la VM qu'une seule fois (sauf utilisation de loadLibrary, et encore).
"Bruno CAUSSE" a écrit dans le message news: BEB11D1F.3C8B%
dans l'article d6fisk$knt$, Arnaud Berger à a écrit le 18/05/05 16:19 :
Pas besoin, les blocs statiques sont exécutés une seule fois, au chargement
de la classe par le ClassLoader (je suppose) .
A bon? et si 2 deux threads ont besoin de de la classe au meme instant ou avant que l'init soit finie. Qui gere ce cas?
Avoir besoin de la classe ne signifie pas qu'elle est à nouveau chargée.
Une classe n'est chargée dans la VM qu'une seule fois (sauf utilisation de
loadLibrary, et encore).
"Bruno CAUSSE" <envoi@lesSpam.fr> a écrit dans le message news:
BEB11D1F.3C8B%envoi@lesSpam.fr...
dans l'article d6fisk$knt$1@news.tiscali.fr, Arnaud Berger à
a.berger@libertycontact.fr a écrit le 18/05/05 16:19 :
Pas besoin, les blocs statiques sont exécutés une seule fois, au
chargement
de la classe par le ClassLoader (je suppose) .
A bon? et si 2 deux threads ont besoin de de la classe au meme instant ou
avant que l'init soit finie. Qui gere ce cas?
Avoir besoin de la classe ne signifie pas qu'elle est à nouveau chargée. Une classe n'est chargée dans la VM qu'une seule fois (sauf utilisation de loadLibrary, et encore).
"Bruno CAUSSE" a écrit dans le message news: BEB11D1F.3C8B%
dans l'article d6fisk$knt$, Arnaud Berger à a écrit le 18/05/05 16:19 :
Pas besoin, les blocs statiques sont exécutés une seule fois, au chargement
de la classe par le ClassLoader (je suppose) .
A bon? et si 2 deux threads ont besoin de de la classe au meme instant ou avant que l'init soit finie. Qui gere ce cas?
Bruno CAUSSE
dans l'article 428b5224$0$24103$, Kupee à a écrit le 18/05/05 16:33 :
Ben si c'est le classloader il gère, d'ailleurs je pense pas qu'il charge 2 fois la meme classe si 2 threads veulent y accéder avant que le chargement de la classe soit fini.
Donc le deuxieme thread attend que la classe soit completement chargée par le premier avant de l'utilisé. Sans jouer sur les mots si ce n'est pas de la synchronisation c'est quoi?
dans l'article 428b5224$0$24103$626a14ce@news.free.fr, Kupee à
rien@rien.rien a écrit le 18/05/05 16:33 :
Ben si c'est le classloader il gère, d'ailleurs je pense pas qu'il
charge 2 fois la meme classe si 2 threads veulent y accéder avant que le
chargement de la classe soit fini.
Donc le deuxieme thread attend que la classe soit completement chargée par
le premier avant de l'utilisé. Sans jouer sur les mots si ce n'est pas de la
synchronisation c'est quoi?
dans l'article 428b5224$0$24103$, Kupee à a écrit le 18/05/05 16:33 :
Ben si c'est le classloader il gère, d'ailleurs je pense pas qu'il charge 2 fois la meme classe si 2 threads veulent y accéder avant que le chargement de la classe soit fini.
Donc le deuxieme thread attend que la classe soit completement chargée par le premier avant de l'utilisé. Sans jouer sur les mots si ce n'est pas de la synchronisation c'est quoi?
Kupee
Bruno CAUSSE wrote:
dans l'article 428b5224$0$24103$, Kupee à a écrit le 18/05/05 16:33 :
Ben si c'est le classloader il gère, d'ailleurs je pense pas qu'il charge 2 fois la meme classe si 2 threads veulent y accéder avant que le chargement de la classe soit fini.
Donc le deuxieme thread attend que la classe soit completement chargée par le premier avant de l'utilisé. Sans jouer sur les mots si ce n'est pas de la synchronisation c'est quoi?
Donc la réponse est que pas besoin de synchroniser les blocs static, c'est java qui s'en charge.
Bruno CAUSSE wrote:
dans l'article 428b5224$0$24103$626a14ce@news.free.fr, Kupee à
rien@rien.rien a écrit le 18/05/05 16:33 :
Ben si c'est le classloader il gère, d'ailleurs je pense pas qu'il
charge 2 fois la meme classe si 2 threads veulent y accéder avant que le
chargement de la classe soit fini.
Donc le deuxieme thread attend que la classe soit completement chargée par
le premier avant de l'utilisé. Sans jouer sur les mots si ce n'est pas de la
synchronisation c'est quoi?
Donc la réponse est que pas besoin de synchroniser les blocs static,
c'est java qui s'en charge.
dans l'article 428b5224$0$24103$, Kupee à a écrit le 18/05/05 16:33 :
Ben si c'est le classloader il gère, d'ailleurs je pense pas qu'il charge 2 fois la meme classe si 2 threads veulent y accéder avant que le chargement de la classe soit fini.
Donc le deuxieme thread attend que la classe soit completement chargée par le premier avant de l'utilisé. Sans jouer sur les mots si ce n'est pas de la synchronisation c'est quoi?
Donc la réponse est que pas besoin de synchroniser les blocs static, c'est java qui s'en charge.
Arnaud Berger
Le premier thread lui-même doit déjà attendre que la classe soit chargée. De plus, la VM garantit qu'aucun thread ne peut essayer de faire joujou avec une classe tant qu'elle n'est pas chargée, et que toute classe ne sera chargée qu'une seule fois.
Quelques infos (mais en anglais) ici : http://java.sun.com/docs/books/jls/second_edition/html/execution.doc.html#44 557
Cordialement,
Arnaud
"Bruno CAUSSE" a écrit dans le message news: BEB12154.3C9A%
dans l'article 428b5224$0$24103$, Kupee à a écrit le 18/05/05 16:33 :
Ben si c'est le classloader il gère, d'ailleurs je pense pas qu'il charge 2 fois la meme classe si 2 threads veulent y accéder avant que le chargement de la classe soit fini.
Donc le deuxieme thread attend que la classe soit completement chargée par le premier avant de l'utilisé. Sans jouer sur les mots si ce n'est pas de la
synchronisation c'est quoi?
Le premier thread lui-même doit déjà attendre que la classe soit chargée.
De plus, la VM garantit qu'aucun thread ne peut essayer de faire joujou avec
une classe tant qu'elle n'est pas chargée, et que toute classe ne sera
chargée qu'une seule fois.
Quelques infos (mais en anglais) ici :
http://java.sun.com/docs/books/jls/second_edition/html/execution.doc.html#44
557
Cordialement,
Arnaud
"Bruno CAUSSE" <envoi@lesSpam.fr> a écrit dans le message news:
BEB12154.3C9A%envoi@lesSpam.fr...
dans l'article 428b5224$0$24103$626a14ce@news.free.fr, Kupee à
rien@rien.rien a écrit le 18/05/05 16:33 :
Ben si c'est le classloader il gère, d'ailleurs je pense pas qu'il
charge 2 fois la meme classe si 2 threads veulent y accéder avant que le
chargement de la classe soit fini.
Donc le deuxieme thread attend que la classe soit completement chargée par
le premier avant de l'utilisé. Sans jouer sur les mots si ce n'est pas de
la
Le premier thread lui-même doit déjà attendre que la classe soit chargée. De plus, la VM garantit qu'aucun thread ne peut essayer de faire joujou avec une classe tant qu'elle n'est pas chargée, et que toute classe ne sera chargée qu'une seule fois.
Quelques infos (mais en anglais) ici : http://java.sun.com/docs/books/jls/second_edition/html/execution.doc.html#44 557
Cordialement,
Arnaud
"Bruno CAUSSE" a écrit dans le message news: BEB12154.3C9A%
dans l'article 428b5224$0$24103$, Kupee à a écrit le 18/05/05 16:33 :
Ben si c'est le classloader il gère, d'ailleurs je pense pas qu'il charge 2 fois la meme classe si 2 threads veulent y accéder avant que le chargement de la classe soit fini.
Donc le deuxieme thread attend que la classe soit completement chargée par le premier avant de l'utilisé. Sans jouer sur les mots si ce n'est pas de la