이 기사는 참조를 위해 런닝 가능한 Java 멀티 스레딩 방법을 구현하는 특정 방법을 공유합니다. 특정 내용은 다음과 같습니다
(i) 단계
1. 실행 가능한 인터페이스를 정의하고 구현하십시오
2. 런닝 가능한 인터페이스에서 실행 메소드를 덮어 쓰고 실행 메소드에서 실행하려는 코드를 저장하십시오.
3. 스레드 클래스를 통해 스레드 객체를 만듭니다.
4. 실행 가능한 인터페이스의 서브 클래스 개체를 실제 매개 변수로 스레드 클래스의 생성자로 전달하십시오.
왜 실행 가능한 인터페이스 서브 클래스 객체의 생성자에 대해 스레드에 전달되는 이유는 무엇입니까? 사용자 정의 메소드가 속한 객체는 런닝 가능한 인터페이스의 서브 클래스 객체이기 때문입니다.
5. 스레드 클래스의 시작 메소드를 호출하여 스레드를 시작하고 실행 가능한 인터페이스 서브 클래스 실행 메소드를 호출하십시오.
(ii) 스레드 안전 공유 코드 블록 문제
목적 : 프로그램에 보안 문제가 있습니까? 그렇다면 어떻게 해결해야합니까?
질문을 찾는 방법 :
1. 다중 스레드 실행 코드가 어떤 코드를 식별하십시오.
2. 데이터를 명확하게 공유하십시오
3. 다중 스레드 코드의 어떤 진술이 데이터를 공유하기 위해 작동하는지 명확히하십시오.
클래스 은행 {개인 int 합계; public void add (int n) {sum+= n; System.out.println ( "sum ="+sum); }} 클래스 CUS는 실행 가능 {private bank b = new Bank (); public void run () {synchronized (b) {for (int x = 0; x <3; x ++) {b.add (100); }}}} public class bankdemo {public static void main (String [] args) {cus c = new cus (); 스레드 T1 = 새 스레드 (C); 스레드 T2 = 새 스레드 (C); t1.start (); t2.start (); }} 또는 두 번째 방식으로 동기화 코드를 수정 방법에 동기화하십시오.
클래스 은행 {개인 int 합계; public synchronized void add (int n) {object obj = new Object (); 합계+= n; try {thread.sleep (10); } catch (예외 e) {e.printstacktrace (); } system.out.println ( "sum ="+sum); }} 클래스 CUS는 실행 가능 {private bank b = new Bank (); public void run () {for (int x = 0; x <3; x ++) {b.add (100); }}} public class bankdemo {public static void main (String [] args) {cus c = new cus (); 스레드 T1 = 새 스레드 (C); 스레드 T2 = 새 스레드 (C); t1.start (); t2.start (); }} 요약 :
1. 수업에서 다루는 문제와 방법을 정의하십시오.
2. 이미 정의 된 클래스에서 문제를 처리하기 위해 방법을 호출하도록 실행 가능한 클래스에서 실행 메소드를 다시 작성하십시오.
동기화 된 블록에서 문제를 처리하려면 클래스의 객체를 수락하십시오.
3. 기본 메소드에서 실행할 여러 스레드를 정의합니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.