¿Cómo sincronizar el método en java que no sea usar palabra clave sincronizada?Otra forma de sincronizar el método
Respuesta
podría utilizar el paquete de java.util.concurrent.locks
, en especial interfaz de bloqueo:
Lock l = ...;
l.lock();
try {
// access the resource protected by this lock
} finally {
l.unlock();
}
Ver here.
puede utilizar clases de seguridad que vienen en el paquete java.util.concurrent.locks
ver http://download.oracle.com/javase/1.5.0/docs/api/index.html?java/util/concurrent/locks/Lock.html
Depende de sus necesidades concretas.
Consulte Java concurrent package para abstracciones de sincronización de mayor nivel. Tenga en cuenta que aún pueden usar synchronized
debajo ...
Eso depende de lo que esté tratando de hacer. ¿Estás mirando por curiosidad o hay una razón específica?
Si está tratando de acelerar sus métodos de subprocesos múltiples, intente sincronizar o bloquear secciones específicas, o evite por completo los problemas de subprocesamiento; hacen que los datos compartidos final
, hacen que los datos estáticos (no compartidos) ThreadLocal
, utilizan los tipos atómicos de java.util.concurrent.atomic
, utilizar colecciones concurrentes (de los) java.util.concurrent
paquetes, etc.
Por cierto, las cosas java.util.concurrent
está disponible sólo en Java5 en adelante, aunque existe un proyecto para respaldar los paquetes para Java 1.4 en http://backport-jsr166.sourceforge.net/
Recomendaría el libro 'Java Concurrency in Practice', de Brian Goetz.
También puede usar @Synchronized desde Project Lombok para generar un campo privado que se utilizará como bloqueo de su método.
Puede usar un bloque sincronizado dentro de su método. Esto puede ser útil si desea que dos métodos pertenecientes a la misma clase se sincronicen por separado.
private Object guard = new ...
public method(){
synchronized(guard){
\\method body
...
}
}
Aunque en la mayoría de los casos esto sugiere que realmente debe romper su clase.
- 1. Sincronizar Redmine con otra Redmine?
- 2. Cómo sincronizar el método estático en java
- 3. Forma correcta de sincronizar ArrayList en java
- 4. ¿Hay alguna forma de sincronizar archivos gif?
- 5. ¿Hay una manera genérica de sincronizar un método asincrónico?
- 6. de mensaje cerrar otra forma
- 7. ¿Cuál es el método recomendado para sincronizar el acceso a un objeto en Java para Android?
- 8. sincronizar el acceso a un campo estático
- 9. ¿Hay algún método para compartir y sincronizar el simulador de iOS? Carpeta de aplicaciones
- 10. ¿Hay alguna forma de escuchar la ejecución del método de otra clase?
- 11. Sincronizar objeto de archivo
- 12. Cómo sincronizar el acceso a muchos objetos
- 13. ¿Cómo sincronizar tareas?
- 14. Sincronizar tres solicitudes ajax
- 15. ¿Cómo sincronizar el desplazamiento de 2 TTreeviews?
- 16. ¿Cómo mover el método principal a otra clase en Scala?
- 17. Método de formulario de acceso de otra clase estática
- 18. diferencia entre sincronizar un método estático y un método no estático
- 19. método JavaScript para navegar a otra URL
- 20. Android Cómo sincronizar dos tareas asincrónicas?
- 21. Sincronizar GIT y ClearCase
- 22. ¿Cómo sincronizar con precisión el tiempo entre los iPhones?
- 23. Cómo sincronizar dos repositorios git
- 24. Puede verificar el contenido de rsync antes de sincronizar
- 25. sincronizar mediante programación el PP en Django
- 26. sincronizar el tiempo JS entre varios dispositivos
- 27. Inicializando Spring bean del método estático de otra clase?
- 28. En lugar de la acción forma y el método
- 29. ¿Hay alguna forma de devolver el tipo anónimo del método?
- 30. C# Forma de nombrar el método Main() por ti mismo?
¿por qué está buscando otra solución? – MeBigFatGuy
iam buscando alternativas (es la parte del aprendizaje) – developer
Cuando coloca sincronizado en un método, es el objeto que no bloquea el método. –