Tem raz�o, eu que escrevi errado aqui, mas no fonte estava + ou - como vc disse. Exceto na parte do synchronized . Parece que mesmo o construtor sendo private, se uma nova inst�ncia da classe for criada dentro da mesma, � possivel sim criar uma inst�ncia. Somente fora dela � que o construtor n�o funciona. Por esse preciso usar o synchronized .
 
 
        public class Numeros{
 
                //Assim funciona pode testar
                private static Numeros numeros = new Numeros();
 
                private Numeros() {}
 
                public Numeros getInstance() {
                    return this.numeros;
                }
                public double arredondaValor(double valor) {
                                //...
                }
                //e aqui tem outros m�todos.
        }
 
 
 
 
Agora quanto ao m�todo  static synchronized se eu usar, a� sim vai coloca tudo em fila � justamente isso que perguntei. Com o synchronized a pergunta est� respondida. Entra tudo em fila. Queria saber se da forma como coloquei entra em fila do mesmo modo. Voc� sabe se entra em fila?
 
 
 
Marcos Tadeu P. Vargens
[EMAIL PROTECTED]
 
 
 
----- Original Message -----
Sent: Monday, January 20, 2003 9:29 PM
Subject: Re: [java-list] M�todos static

getInstance() n�o vai retornar uma �nica inst�ncia, olha s�:
 
        public class Numeros{
 
             /*
                Isso aqui vai causar um StackOverflowError
                assim que voc� chamar getInstance()
            */
                private Numeros numeros = new Numeros();
 
            /*
                Construtor privado, est� certo, j� que a inten��o
                � criar uma classe Singleton
            */
                private Numeros() {}
 
            /*
                Esse m�todo n�o est� acess�vel �s classes externas,
                assim para voc� poder acess�-lo precisa criar uma inst�ncia antes,
                o que n�o ser� poss�vel pois o construtor � privado...
            */
               public Numeros getInstance() {
                                return this.numeros;
                }
                public double arredondaValor(double valor) {
                                //...
                }
                //e aqui tem outros m�todos.
        }
 
Abaixo segue a maneira certa de voc� tornar sua classe Singleton:
 
        public class Numeros {
 
                private static Numeros numeros;
 
                private Numeros() {}
 
                public static synchronized Numeros getInstance() {
                        if  (numeros == null) {
                                numeros = new Numeros();
                        }
                        return numeros;
                }
 
                public double arredondaValor(double valor) {
                        //...
                }
                // e aqui tem outros m�todos.
        }
 
 
 
----- Original Message -----
Sent: Wednesday, January 15, 2003 11:07 PM
Subject: [java-list] M�todos static

Tenho v�rias classes que v�o ser usadas no sistema em que trabalho e como elas s�o gen�ricas fizemos da seguinte forma:
 
public class Numeros{
    private Numeros numeros = new Numeros();
 
    private Numeros(){}
 
    public Numeros getInstance(){
        return this.numeros;
    }
 
    public double arredondaValor(double valor){
        //...
    }
   
    //e aqui tem outros m�todos.
 
}
 
Dessa maneira o m�todo getInstance sempre me retorna uma unica inst�ncia dessa classe, da qual eu s� preciso usar os m�todos. Eu poderia criar os m�todos todos sendo static mas preferi dessa forma o que parece ser a mesma coisa.
Agora tenho uma duvida:
 
Quando chamo esses m�todos em v�rias outras classes ao mesmo tempo, a VM coloca isso em uma fila ou atende (todas as chamadas a um m�todo) aos poucos?
 
Quem puder me responder agrade�o.
 
 
Marcos Tadeu P. Vargens
[EMAIL PROTECTED]


Esta mensagem foi verificada pelo E-mail Protegido Terra.
Scan engine: VirusScan / Atualizado em 15/01/2003 / Vers�o: 1.3.13
Proteja o seu e-mail Terra: http://www.emailprotegido.terra.com.br/

Responder a