El ejemplo de este artículo indica el uso de la sincronización de hilo Java. Compártelo para todos para su referencia. El análisis específico es el siguiente:
El uso de múltiples hilos proporciona mucha conveniencia para nuestros procedimientos, y también nos trae problemas que nunca hemos considerado en el pasado. Cuando usamos recursos compartidos de múltiples subprocesos, ocurrirán accidentes: por ejemplo, salimos a comer juntos, todos son un hilo y la comida en la mesa es recursos compartidos. Vi el objetivo, cuando lo vi, de repente ~~~ las piernas de pollo desaparecieron, y un hilo más cerca del plato lo sostenía con orgullo.
Para evitar la aparición de los problemas anteriores, Java nos proporciona "modificador sincronizado (sincronización)" para evitar conflictos de recursos. Un bloqueo de máquina (bloqueo), que es inherente al resto de su vida y no necesita escribir ningún código para habilitarlo. Cuando llamamos a cualquier función sincronizada, el objeto se bloqueará y no se pueden llamar todas las funciones sincronizadas en el objeto hasta que se ejecute la primera función y el bloqueo se desbloquee.
Importar java.awt.bordlaut; Javax.swing.jTextArea; Cuenta, el monto del depósito bancario se muestra por el monto del depósito bancario para mostrar XTarea privado textAREA = NULL; una interfaz de retiro bancario*/ public testMain5 () {súper ("prueba de sincronización de hilo"); = new JTextarea (); ("Sub -Branch", MyAccounts, Bank.Dea L_Saving, 800); MyAccounts, Bank.deal_fetch, 200); "Tugen Sub -Branch", MyAcCounts, Bank.deal_fetch, 700);}); spd (spd (sp); .exit_on_close); Características*/ class Bank extiende el hilo {/ *** campo estático: se utiliza para indicar el almacenamiento*/ public static final en defining_saving = 0;/ *** campo estático: se utiliza para indicar la extracción de*/ público público Final estático. * @Param myAccounts mi cuenta bancaria* @param Comportamiento de compra, campo de referencia: Dead_saving o Difer_fetch* @param ¿Número de dinero*/ Public Bank (nombre de cadena, MyAccounts myAccounts, en t compra, int count) {super (nombre) . Deposition Business $ count = myaccounts.saving (count);} else if (buy == bankal_fetch) {// Si es un negocio de retiro $ count = myaccounts.fetch (count);} text.settext (integer.toString ($ count )); = 1100; Después de completar* / public int saving (int c) {sincronizado (count) {// return count += c; Primero verifique el depósito en la cuenta $ count += c; {Ex.PrintStackTrace ();} count = $ Count;/RETORACIÓN AL NÚMERO DE DESEMPLETOS}/*** ACTO* @param C para retirar dinero* @return Business después de la finalización*/public int Fetch (int c) {Synchronized (Count) {// Return Countt -= C; c; Try {Thread.sleep (1000 1000); Número de depósito}}} public static void main (string [] args) {new testMain5 ();}}Se espera que este artículo sea útil para el diseño del programa Java de todos.