Reflection + Concorrência  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
eberson_oliveira
JavaGuru
[Avatar]

Membro desde: 16/01/2008 10:18:17
Mensagens: 206
Localização: Matão - SP
Offline

Olá a todos,

Estou com um problema ao utilizar reflection... tenho um código assim:



No meu primeiro teste não tinha o bloco sincronizado... porém, quando eu tentava acessar esse código através de várias threads diferentes eu recebia um erro assim:

Depois de colocar em um bloco sincronizado.. o problema parou de ocorrer... mas passei a ter problemas com deadlock entre as minhas threads com as threads do swing... alguém sabe como eu deveria fazer para poder criar esse frame usando reflection sem gerar esses problemas em ambientes multi-threads?

grato pela atenção,
Éberson
[Email] [MSN]
rogelgarcia
GUJ Master
[Avatar]

Membro desde: 21/06/2007 23:27:21
Mensagens: 1850
Offline

O problema é mais abrangente do que só esse pedaço de código...

Rógel Garcia, criador do framework NEXT

http://www.nextframework.org
Provirus01
Smalltalk
[Avatar]

Membro desde: 18/03/2010 21:13:45
Mensagens: 1
Offline

o código para iniciar o carregamento, a referência deve trazer para instanciar a classe. eg.

try{
Object instance = Class.forName ( "javax.swing.JFrame). NewInstance ();
JFrame frame = (JFrame) instance;
}catch(Exception ex){
ex.printStackTrace();
}
eberson_oliveira
JavaGuru
[Avatar]

Membro desde: 16/01/2008 10:18:17
Mensagens: 206
Localização: Matão - SP
Offline

rogelgarcia wrote:O problema é mais abrangente do que só esse pedaço de código...


Sim, tem razão... acabei notando que o problema ocorria dentro do método invocado (no caso o construtor) e não no uso de reflexão. Ele fazia uso de uma coleção que não estava devidamente sincronizada.

No entanto, estou com uma dúvida: Reflection pode ser considerada thread safe?

Imagino o seguinte: Para fazer uso de reflexão eu vou acessar diretamente o objeto Class. Ao carregar o objeto class com Class.forName eu vou ter apenas uma instância dessa class, correto? Ao fazer uso desse class num contexto multi-thread é possível que várias delas acessem esse class ao mesmo tempo? Como poderia corrigir? Sincronizando o class em questão ou tem outra forma melhor?

[]
[Email] [MSN]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team