(9) Java 시작-다중 스레드(7) 다중 스레드의 총괄 및 확장
2588 단어 Java 시작
1. 다중 스레드 생성: Thread 방법을 계승하거나 Runnable 인터페이스를 실현한다.2. 다중 스레드의 상태: 생성, 운행, 동결.임시 장애, 소멸 등.3. 다중 스레드 안전 문제의 발생: 다중 스레드 조작으로 데이터를 공유하는 코드가 여러 가지가 있다.4. 다중 루틴 안전 문제의 해결: 동기화 함수 또는 동기화 코드 블록.5. 다중 라인의 사라진 자물쇠가 생기는 원인: 동기 자물쇠의 끼워넣기.6. 스레드 간의 통신: 깨우기 메커니즘, 다중 생산 다중 소비자, Lock과 Condition을 기다린다.
2. 다중 스레드 확장 이해
1. 다중 스레드에서wait와sleep의 차이(1),wait는 시간을 지정할 수도 있고 지정하지 않을 수도 있다.그러나sleep은 시간을 지정해야 합니다.(2) 동기화 중,wait 이후 집행권을 방출하고 자물쇠를 방출한다.sleep 집행권을 방출하고 자물쇠를 방출하지 않습니다.(3) 만약에 동기화 중에 세 개의 라인이wait에 걸렸다면 notifyAll에 동시에 걸리면 문제가 생기지 않을까요?아니요. 같은 시간에 한 라인만 집행권을 얻고 동기화 중인 자물쇠를 얻으며 아래로 프로그램을 실행합니다. 다른 라인은 현재 라인에서 자물쇠를 풀고 나서만 실행할 수 있습니다.2. 스레드 정지 방식(1),stop: 스레드를 정지할 수 있지만 안전하지 않습니다.(2),run 방법 종료: 일반적인run에는 순환 구조가 있어 순환을 제어하기만 하면 임무를 끝낼 수 있다.표시를 정의하고 순환을 일정한 조건하에서 끝내면 ok입니다.(3)、강제 깨우기:interrupt() 방법으로 라인을 동결 상태에서 운행 상태로 회복할 수 있지만 InterrupttedException이 발생합니다.(4), 수호 라인: setDaemon(), 백엔드 라인으로 되어 있으며 다른 모든 라인이 끝나면 백엔드가 자동으로 사라집니다.3. 다선정의 다른 방법(1),join();임시로 하나의 라인 연산을 추가할 때 사용할 수 있습니다.(현재 라인에 가입하면 현재 라인은 동결 상태로 진입하고 가입한 라인이 실행된 후에야 동결 상태가 종료됩니다.)(2), 스레드 우선순위(1-10): 기본값은 5, 10입니다.(3), yield(): 현재 스레드를 일시 중지합니다.(4) 루트 익명 내부 클래스의 작은 예:
public class Test {
public static void main(String[] args) {
new Thread( //
new Runnable() {
public void run() {
System.out.println(" ");
}
}
)
{//Thread
public void run()
{
System.out.println(" ");
}
}.start();
// Thread(){....}
//new Thread(){....}
}
}
:
설명: 1. 하위 클래스로 출력하는run 방법은 Thread 상위 클래스와 하위 클래스의 실현 방법이기 때문에 반드시 집행할 것이다.2. 작업으로 출력하는run 방법은 Thread 부모 클래스의 대상 작업의 호출이기 때문에 하위 클래스가 없으면 실행할 수 있습니다.