sincronizar variables de clase
Hola a todos:
Tengo una clase de la cual creo un objeto que utilizo en varios Threads, que van modificando ese objeto.
La clase tan solo contiene variables, no metodos, del estilo a:
class MiClase
{
int dato1=1000;
int dato2=2000;
....
}
class Programa extends ...
{
....
main(...)
{
MiClase miClase;
...
...creo y lanzo varios theads que leen y escriben del objeto miClase
...
}
}
Como puedo conseguir que los threads no accedan a la vez al objeto. Todo lo que he visto sobre la clausula synchronyced se refiere a sincronizar un trozo de un método. ¿Alguien puede echar me una mano??
Gracias a todos
Tengo una clase de la cual creo un objeto que utilizo en varios Threads, que van modificando ese objeto.
La clase tan solo contiene variables, no metodos, del estilo a:
class MiClase
{
int dato1=1000;
int dato2=2000;
....
}
class Programa extends ...
{
....
main(...)
{
MiClase miClase;
...
...creo y lanzo varios theads que leen y escriben del objeto miClase
...
}
}
Como puedo conseguir que los threads no accedan a la vez al objeto. Todo lo que he visto sobre la clausula synchronyced se refiere a sincronizar un trozo de un método. ¿Alguien puede echar me una mano??
Gracias a todos
Hola:
Si no quieres meter metodos synchronized para acceder a esas variables, puedes hacer que los hilos lo hagan asi
synchronized (miClase)
{
// acceder a las variables
}
Todos los hilos deben respetar el convenio y hacerlo así. De esta forma dos hilos no accederan a la vez a las variables de la clase.
Se bueno.
Si no quieres meter metodos synchronized para acceder a esas variables, puedes hacer que los hilos lo hagan asi
synchronized (miClase)
{
// acceder a las variables
}
Todos los hilos deben respetar el convenio y hacerlo así. De esta forma dos hilos no accederan a la vez a las variables de la clase.
Se bueno.
También podrías hacer que las variables sólo se pudieran modificar mediante métodos set_var() y recuperar mediante métodos set_()
Y estos métodos que estuvieran sincronizados.
Saludos
Y estos métodos que estuvieran sincronizados.
Saludos