Este artículo estudia principalmente el uso del intercambiador de herramientas de sincronización de hilo de programación Java. Echemos un vistazo al contenido específico a continuación.
Si dos hilos necesitan intercambiar información entre sí durante su operación, como los datos o el espacio utilizado, deben usar la clase de intercambio. El intercambiador proporciona una forma muy conveniente para que los hilos intercambien información. Puede servir como un punto de sincronización para dos hilos para intercambiar objetos. Solo cuando cada hilo ingresa exchange () y da el objeto, puede aceptar el objeto dado cuando otros subprocesos regresan.
Solo dos hilos pueden intercambiar datos a la vez. Si hay múltiples hilos, solo dos pueden intercambiar datos. Veamos un ejemplo común: de la mano y entregue los productos con una canción.
public class ExchangerTest {public static void main (string [] args) {ExecutorService Service = Ejecutors.newCachedThreadPool (); final intercambiador intercambiador = new Exchanger (); // Define un objeto de intercambio para intercambiar datos // Abrir un hilo para ejecutar tareas. "Heroin"; System.out.println ("Thread" + Thread.CurrentThread (). (String) Exchanger.Exchange (data1); System.out.println ("Thread" + Thread.CurrentThread (). GetName () + "Swap Heroin para Exchange" + Data2);} Catch (Exception e) {} finalmente {servicio.shutdown (); system.out.println ("La transacción se completa con el dinero!");}}}); Task Service.ExeCute (new runnable () {@anverride public void run () {try {String data1 = "3 millones"; system.out.println ("hilo" + thread.currentThread (). getName () + "tomar" + data1 + "tomar"); thread.sleep ((long) (math.random ()*10000)); string data2 = (String) Exchanger.Exchange (Data1); System.out.println ("Thread" + Thread.CurrentThread (). GetName () + "Geted con 3 millones de" + Data2);} Catch (Exception E) {} Finalmente {Service.Shutdown (); System.out.println ("La transacción está completa, ejecutada con con heroína! ");}}});}});}});}});}});}}Del código, parecía ver a dos personas intercambiando drogas ... veamos cómo son los resultados de la transacción:
Thread Pool-1-Thread-1 está sacando la heroína de la droga. Thread Pool-1-Thread-2 está sacando 3 millones. Thread Pool-1-Thread-2 está obteniendo la heroína Hild Pool-1-Thread-1 para el intercambio de heroína por 3 millones. La transacción se completa. ¡Toma la heroína y corre rápidamente!
Después de que termine la transacción, ¡huye con el dinero!
Corre rápido. A juzgar por los resultados de ejecución, realiza el intercambio de datos. Esto solo intercambia un tipo básico de datos. Sus usos reales no se limitan a esto. Por ejemplo, podemos intercambiar un objeto, lo cual es útil. JDK mencionó oficialmente una aplicación de alto nivel:
Use el intercambiador para intercambiar buffers entre hilos, por lo que cuando sea necesario, el hilo que llena el búfer obtiene un búfer recién vacío y pasa el búfer relleno al hilo que buffer vacante.
Esto debe basarse en la situación real. La idea es la misma que la anterior. En realidad, debe definir una clase de amortiguación, y luego la clase de este búfer se intercambia entre los dos hilos. En cuanto a cómo implementarlo en la clase, depende de la situación real. Eso es todo para el uso del intercambiador ~
Lo anterior es todo el contenido de este artículo sobre el análisis de instancias de uso del intercambiador de herramientas de sincronización de hilo de programación Java, espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!