1. 스레드 컨트롤은 매우 일반적입니다. 예를 들어 파일이 중간에 전송되거나 파일 전송이 종료됩니다.
2. 실에는 창조, 작전, 작전, 차단 및 사망의 5 개의 상태가 있습니다.
작성 : 새 연산자를 사용하여 스레드를 만듭니다
실행 가능 : 시작 방법을 사용하여 스레드를 시작한 후 시스템은 리소스를 할당합니다.
실행 상태 : 스레드를 실행하는 방법
차단 : 러닝 스레드가 어떤 이유로 실행 중지됩니다
죽음 상태 : 실이 끝납니다
3. 전통적인 방법의 안전 문제
Thread 's Stop (), Sport (), recume (), destrove () 및 destrove () 메소드는 안전하지 않아 교착 상태를 유발할 수 있기 때문에 더 이상 사용되지 않습니다.
4. 스레드 작동을 제어하는 방법
예를 들어, 파일 전송이 10 초가 걸리면 특정 모멘트로 전송 한 다음 전송이 완료 될 때까지 계속하십시오. 이 방법을 사용하여 우선, 파일 전송을위한 실행 가능한 클래스를 구현하십시오.
코드는 다음과 같습니다.
코드 사본은 다음과 같습니다.
공개 클래스 ThreadControlTest1은 실행 가능합니다
{
개인 int 백분율 = 0;
공개 void run ()
{
while (true)
{
System.out.println ( "전송 진행 :" +% + "%");
노력하다
{
Thread.sleep (1000);
}
캐치 (예외)
{}
백분율 += 10;
if ( % == 100)
{
System.out.println ( "이전 완료");
부서지다;
}
}
}
public static void main (String [] args)
{
ThreadControlTest1 ft = new ThreadControlTest1 ();
스레드 th = 새 스레드 (ft);
th.start ();
}
}
5. 콘솔에서 파일 전송을 인쇄하는 시뮬레이션 프로세스를 실행하십시오. 이 클래스의 객체가 스레드로 실행되면, Wehe 루프는 10 번 실행 된 다음 종료된다는 것을 알 수 있습니다.
그러나 특정 순간 (예 : 5 초 후)에 실행되는 스레드를 일시 중지해야하지만 스레드의 관련 기능을 사용할 수 없습니다.
이 문제를 해결하기 위해 일반적인 방법은 다음과 같습니다.
1. 잠시 멈출 필요가있을 때, 스레드의 실행 방법이 자유 리소스로 실행되도록하십시오 (실제로, 스레드가 영구적으로 끝나게하십시오).
2. 스레드가 계속되어야 할 때, 새로운 스레드가 열려서 계속 작동합니다.
실행 방법을 끝내는 방법은 런 메소드에 while 루프가 있고 루프 변경 플래그를 true에서 false로 변경하십시오.
6. 위의 코드는 다음으로 변경할 수 있습니다.
코드 사본은 다음과 같습니다.
공개 클래스 ThreadControlTest1은 실행 가능합니다
{
개인 int 백분율 = 0;
개인 부울 isrun = true;
공개 void run ()
{
while (isrun)
{
System.out.println ( "전송 진행 :" +% + "%");
노력하다
{
Thread.sleep (1000);
}
캐치 (예외)
{}
백분율 += 10;
if ( % == 100)
{
System.out.println ( "이전 완료");
부서지다;
}
}
}
public static void main (String [] args)
{
ThreadControlTest1 ft = new ThreadControlTest1 ();
스레드 th = 새 스레드 (ft);
th.start ();
노력하다
{
Thread.sleep (5000);
} catch (예외)
{}
ft.isrun = false;
System.out.println ( "1 분의 일시 중지");
노력하다
{
Thread.sleep (1000*60);
} catch (예외)
{}
ft.isrun = true;
Th = 새로운 스레드 (ft);
th.start ();
}
}