| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/02/2010 10:41:48
|
laudenpower
JavaEvangelist
![[Avatar]](/images/avatar/090d1f9732c52fc3770cba691cff7d11.jpg)
Membro desde: 28/12/2008 21:00:08
Mensagens: 349
Offline
|
Olá, gostaria de saber se quando eu tenho um método sincronizado em um objeto, quando outra thread tenta acessar outro método desse objeto o mesmo é lockado?
Pergunto isso por que nesse artigo o autor diz que o objeto inteiro é sincronizado.
http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/threads/sincronizacao.html
Nesse caso se não for, como posso sincronizar o objeto inteiro para que quando uma thread estiver utilizando, outra espere o acesso ao mesmo?
Desde já agradeço a todos.
This message was edited 1 time. Last update was at 03/02/2010 11:35:40
|
Enquanto cultivares teu saber, nada tens a temer!
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/02/2010 10:53:44
|
asaudate
GUJ Master
![[Avatar]](/images/avatar/974e2945a18e0bfb8e3aa8becac3e65c.jpg)
Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline
|
laudenpower wrote:Olá, gostaria de saber se quando eu tenho um método sincronizado em um objeto, quando outra thread tenta acessar outro método desse objeto o mesmo é lockado?
Pergunto isso por que nesse artigo o autor diz que o objeto inteiro é sincronizado.
http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/threads/sincronizacao.html
Nesse caso se não for, como posso sincronizar o objeto inteiro para que quando uma thread estiver utilizando, outra espere o acesso ao mesmo?
Desde já agradeço a todos.
Sim, um método sincronizado pega o lock no objeto inteiro (lembrando que os métodos wait e notify, por exemplo, são feitos em cima do objeto, não da thread). Esse lock só é liberado se a thread fizer uma chamada a wait(), por exemplo.
[]´s
|
Alexandre Saudate
__________________________
Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.
Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate
Evite usar Axis2!!! Leia aqui para mais detalhes!
@alesaudate
Quer ler um blog especializado em web services e SOA?
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/02/2010 11:02:10
|
laudenpower
JavaEvangelist
![[Avatar]](/images/avatar/090d1f9732c52fc3770cba691cff7d11.jpg)
Membro desde: 28/12/2008 21:00:08
Mensagens: 349
Offline
|
Então nesse caso se uma thread acessa o objeto, enquanto ela estiver utilizando o método sincronizado, as demais threads deverão esperar até essa thread terminar o processamento? Nesse caso o lock só é utilizado no momento do acesso ao método sincronizado ou no acesso a qualquer método da do objeto (incluindo os não sincronizados?)
Desde já gostaria de agradecer a atenção e gostaria de me colocar a disposição para ajuda-lo no que estiver ao meu alcance
|
Enquanto cultivares teu saber, nada tens a temer!
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/02/2010 11:12:02
|
mochuara
GUJ Master
Membro desde: 20/05/2009 11:21:32
Mensagens: 1776
Offline
|
laudenpower wrote:Olá, gostaria de saber se quando eu tenho um método sincronizado em um objeto, quando outra thread tenta acessar outro método desse objeto o mesmo é lockado?
Se o outro método for sincronizado, sim.
laudenpower wrote:
Nesse caso se não for, como posso sincronizar o objeto inteiro para que quando uma thread estiver utilizando, outra espere o acesso ao mesmo?
Desde já agradeço a todos.
Coloca synchronized em todos os metodos publicos do objetos.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/02/2010 11:21:24
|
asaudate
GUJ Master
![[Avatar]](/images/avatar/974e2945a18e0bfb8e3aa8becac3e65c.jpg)
Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline
|
Vale lembrar que o método sincronizado pede o lock em cima do objeto, e a thread espera enquanto não obtiver o lock. Se o método não for sincronizado, a thread não vai requerer o lock e vai executar normalmente.
[]´s
|
Alexandre Saudate
__________________________
Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.
Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate
Evite usar Axis2!!! Leia aqui para mais detalhes!
@alesaudate
Quer ler um blog especializado em web services e SOA?
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/02/2010 11:33:14
|
laudenpower
JavaEvangelist
![[Avatar]](/images/avatar/090d1f9732c52fc3770cba691cff7d11.jpg)
Membro desde: 28/12/2008 21:00:08
Mensagens: 349
Offline
|
Desde já gostaria de agradecer a todos que ajudaram para que dessa forma eu possa encerrar a minha participação nesse tópico. Desde já muito obrigado
|
Enquanto cultivares teu saber, nada tens a temer!
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999 |
|
|
 |
|
|