Duvida com sincronização

8 respostas
R

olá pessoal

tenho a seguinte situação:

tenho uma thread que lê mensagens de um socket, armazena em uma string a última mensagem lida e trata o serviço requisitado.
eu gostaria de saber se eu preciso de sincronização nesta situação

while(run)
		{
			try{
			lastMessage = in.readLine();
			logger.info("Mensagem lida de cliente|Cliente:"+client.getSocket().getInetAddress()+"|Mensagem:"+lastMessage);
			client.setLastComunication(System.currentTimeMillis());
			server.handleMessage(lastMessage, client);
			
				}
			
			catch (IOException e) {
				// TODO: handle exception
				logger.error("Erro ao ler mensagens do cliente|Cliente:"+client.getSocket().getInetAddress()+"|Erro:"+e);
				
			} 

//... 

	public String getLastMessage() {
		return lastMessage;
	}

visto que em apenas nessa thread a string lastMessage vai ser modificada, mas várias threads podem acessa-la, tenho q sincronizar na hora de modificar o seu valor?

8 Respostas

M

precisa pq se nao o cara vai ler a mesma mensagem mais de uma vez, ou nem vai ler a ultima…

A

Da uma olhada na implementação da Classe Synchronized!

M

e existe? ehehehehe

A

Existe sim!!!
so para usar!!!
Eu usei uma vez quando fiz um trabalho mas tem muito tempo, lembro que o trabalho era de processos paralelos sobre leitores e escritores, ai eu tinha que isolar a região critica, então minha função que representava a zona critica tinha um implements Syscronized! Que garantia que somente um unico acesso por vez nesse metodo! Tempo muito tempo que fiz isso, eu tava no 4º periodo da facu!

M

Cara…Synchronized não é uma classe…

Eu não sei o que é, mas não é uma classe…tu usa synchronized para sincronizar Threads

public void synchonized Parar()
{
    wait();
}

public void synchronized Continuar()
{
  notifyAll();
}

:twisted:

A

Classe, interface, o que diabos então seria o Syncronized!
Eu achava que era uma classe interna do java, mas agora estou na duvida!
O que é?

M

“AndersonAugusto”:
Classe, interface, o que diabos então seria o Syncronized!
Eu achava que era uma classe interna do java, mas agora estou na duvida!
O que é?

é uma palavra reservada.

C

“matheus”:
“AndersonAugusto”:
Classe, interface, o que diabos então seria o Syncronized!
Eu achava que era uma classe interna do java, mas agora estou na duvida!
O que é?

é uma palavra reservada.

chamaria de função primitiva… :???:

Criado 5 de junho de 2005
Ultima resposta 9 de jun. de 2005
Respostas 8
Participantes 5