이 기사의 예는 Java 스레드 동기화의 사용을 알려줍니다. 참조를 위해 모든 사람을 위해 공유하십시오. 특정 분석은 다음과 같습니다.
멀티 스레딩을 사용하면 절차에 대한 많은 편의성을 제공하며 과거에는 결코 고려하지 않은 문제도 제공합니다. 우리가 멀티 스레드 공유 자원을 사용하면 사고가 발생합니다. 예를 들어, 우리는 함께 외식을하고, 모든 사람이 실이고, 테이블의 닭고기 다리를 공유 할 때 테이블의 음식은 공유됩니다. 목표를 보았을 때, 내가 그것을 보았을 때, 나는 갑자기 닭 다리가 사라지고 접시에 더 가까운 실이 자랑스럽게 붙잡고있었습니다.
위의 문제의 발생을 피하기 위해 Java는 자원 충돌을 피하기 위해 "동기화 (동기화) 수정 자"를 제공합니다. 남은 생애 동안 내재 된 기계 잠금 (잠금).이를 활성화하기 위해 코드를 작성할 필요가 없습니다. 동기화 된 함수를 호출하면 객체가 잠겨 있으며 첫 번째 함수가 실행되고 잠금이 잠금 해제 될 때까지 객체의 모든 동기화 된 함수를 호출 할 수 없습니다.
Java.ava.ava.ActionListener; javax.swing.jtextArea; import javax.swing.jtextfield;/*** 스레드 동기화*Java에서 스레드 동기화의 필요성을 증명하기 위해 은행 저장 절차를 시뮬레이션합니다. 계정, 은행 입금 금액은 개인 XtArea textArea = null을 표시하기 위해 은행 예금의 금액으로 표시됩니다. 은행 철수 인터페이스*/ public testmain5 () {super (스레드 동기화 테스트”); = New JtextArea (); "트랜잭션 로그 :"); ( "Clock Tower Sub -Branch", MyAccounts, Bank.dea L_Saving, 800; MyAccounts, bank.deal_fetch, 200); "tugen sub -branch", bank.deal_fetch, 700); spd (spd (sp); .exit_on_close); Setlocation rantaveto (300, 200); 특징*/ 클래스 뱅크 확장 스레드 {/ *** 정적 필드 : 스토리지*/ public static final을 정의 _saving = 0;/ *** 정적 필드에 표시하는 데 사용됩니다.*/ public의 추출을 나타내는 데 사용됩니다. 정적 최종. * @param myAccounts 내 은행 계정* @param 구매 행동, 참조 필드 : dead_saving 또는 defer_fetch* @param money number*/ public bank (string name, myAccounts myAccounts, t buy, int count) {super (name); myAccounts = myAccounts 입금 비즈니스 $ count = myAccounts.saving (count);} else if (buy == bankal_fetch) {// 인출 비즈니스 인 경우 $ count = myAccounts.fetch (count);} text.settext (integer.toString ($ count )); TextArea ( " / n" + this.getName () + " +" + "}} / *** 내 계정 번호* 동기 테스트* / 클래스 마이어 카운트 {개인 정수 수 = 1100; 공개 공개 Aaccounts () {} / *** 查 询* / public inq uire () {{{incronized (count) {return count;} / *** 예금 사업* @param c 예금 번호* @return 비즈니스 완료 후* / public int saving (int c) {count (count) {// return += c; 먼저 계정에서 입금을 확인하십시오. {ex.printstacktrace ();} count = $ count; // Acto Business* @Param C를 완료 한 후*/public int fetch (int c) {synchronized (count) {// countt -= c; C; try {stride.sleep (1000 1000); 최신 예금 번호}} public static void main (String [] args) {new testmain5 ();}}이 기사는 모든 사람의 Java 프로그램 설계에 도움이되기를 바랍니다.