El entorno operativo de este tutorial: sistema Windows 7, versión Java 10, computadora DELL G3.
1. Método de obtención
lock(), tryLock(), tryLock(largo tiempo, unidad TimeUnit) y lockInterruptfully() se utilizan para adquirir bloqueos.
( 1) El método lock () es el método más utilizado para obtener bloqueos . Si el bloqueo ha sido adquirido por otro hilo, espere.
( 2) El método tryLock() tiene un valor de retorno, lo que significa que se utiliza para intentar adquirir el bloqueo . Si la adquisición es exitosa, devuelve verdadero. Si la adquisición falla (es decir, el bloqueo ha sido adquirido por otro). hilo), devuelve falso, lo que significa que el método regresa inmediatamente sin importar qué. No estarás esperando allí cuando no puedas abrir la cerradura.
( 3) El método tryLock (tiempo prolongado, unidad TimeUnit) es similar al método tryLock (), pero la diferencia es que este método esperará un cierto período de tiempo cuando no se pueda obtener el bloqueo. dentro del límite de tiempo, devuelve falso. Devuelve verdadero si el bloqueo se obtuvo inicialmente o durante el período de espera.
( 4) El método lockInterruptfully () es especial. Al adquirir un bloqueo a través de este método, si el hilo está esperando adquirir el bloqueo, el hilo puede responder a la interrupción, es decir, interrumpir el estado de espera del hilo. Es decir, cuando dos subprocesos quieren adquirir un bloqueo a través de lock.lockInterruptiblemente () al mismo tiempo, si el subproceso A adquiere el bloqueo en este momento y el subproceso B solo está esperando, entonces el método threadB.interrupt() es llamado en el hilo B. Puede interrumpir el proceso de espera del hilo B.
2.Ejemplos
Tomemos como ejemplo trylock.
Bloquear bloqueo =...; si(bloqueo.tryLock()) { intentar{ //Procesando tareas }catch(Exception ex){ }finalmente{ lock.unlock(); //Libera el bloqueo } }demás { // Si no se puede adquirir el candado, haz otras cosas directamente}
Hay muchos métodos almacenados en la interfaz de Java para facilitar las llamadas directas cuando se utilizan subprocesos. Todo el mundo está familiarizado con la interfaz de bloqueo y ya tenemos una comprensión preliminar del concepto. Por lo tanto, el método para adquirir el candado no debe estar muy claro todavía.
Los anteriores son los cuatro métodos para adquirir bloqueos en Java. Después de leer el artículo, puede fortalecer su memoria y comprensión en esta área. Si está interesado en otros métodos para adquirir bloqueos, también puede encontrar códigos relevantes para practicar después de clase.