O exemplo deste artigo informa o uso da sincronização do thread java. Compartilhe para todos para sua referência. A análise específica é a seguinte:
O uso do multi -threading fornece muita conveniência para nossos procedimentos e também nos traz problemas que nunca consideramos no passado. Quando usamos recursos compartilhados com vários threads, os acidentes acontecem: por exemplo, saímos para comer juntos, todo mundo é um tópico e a comida na mesa é compartilhada. Vi o gol, quando o vi, de repente ~~~ As pernas de frango desapareceram, e um fio mais próximo do prato o segurava com orgulho.
Para evitar a ocorrência dos problemas acima, o Java nos fornece "modificador sincronizado (sincronização)" para evitar conflitos de recursos. Uma trava da máquina (trava), que é inerente ao resto de sua vida e não precisa escrever nenhum código para ativá -lo. Quando chamamos qualquer função sincronizada, o objeto será bloqueado e todas as funções sincronizadas no objeto não podem ser chamadas até que a primeira função seja executada e a trava seja desbloqueada.
Importar Java.awt.Berlayout; Javax.swing.jtextarea; Conta, o valor do depósito bancário é exibido pelo valor do depósito bancário para exibir o XTAREA PRIVADO TEXTAREA = NULL; uma interface de retirada do banco*/ public TestMain5 () {Super ("Teste de sincronização de threads"); = novo JTexTarea (); ("Sub -Branch da Torre do Clock", MyAccounts, Bank.Dea L_SAVER, 800); MyAccounts, Bank.Deal_Fetch, 200); "Tugen Sub -Branch", MyAccounts, Bank.Deal_Fetch, 700);}); spd (spd (sp); .exit_on_close); RECURSOS*/ Class Banco estende o thread {/ *** CAMPO ESTÁTICO: É usado para indicar o armazenamento*/ Public Static Final em Defining_Saving = 0;/ *** Campo estático: é usado para indicar a extração de*/ public Final estático. * @Param myAccounts Minha conta bancária* @param Comportamento de compra, campo de referência: Dead_sAving ou Defer_Fetch* @param Contagem número de dinheiro*/ Banco público (nome da string, MyAccounts MyAccounts, em T buy, int contagem) {super (nome); . Business de depósito $ count = myAccounts.saving (count);} else if (buy == Bankal_fetch) {// se for retirada de negócios $ count = myAccounts.Fetch (contagem);} text.settext (Integer.toString ($ contagem )); = 1100; Após a conclusão* / public int Saving (int c) {sincronizado (contagem) {// Return Count += C; Primeiro, verifique o depósito na conta $ count += c; tente {thread.sleep (thread.sleep (thread.sleep 1000); // Para melhor observar, o negócio faz uma pausa aqui por 1 segundo} captura (interrupção {Ex.PrintStackTrace ();} count = $ count; {sincronizado (contagem) {// Return countt -= c; c; Experimente {Thread.sleep (1000 1000); número de depósito}}} public static void main (string [] args) {new testMain5 ();}}Espera -se que este artigo seja útil para o design do programa Java de todos.