java 다중 루틴 프로그래밍의 사용thread 클래스 생성 루틴
public Thread( );
public Thread(Runnable target);
public Thread(String name);
public Thread(Runnable target, String name);
public Thread(ThreadGroup group, Runnable target);
public Thread(ThreadGroup group, String name);
public Thread(ThreadGroup group, Runnable target, String name);
public Thread(ThreadGroup group, Runnable target, String name, long stackSize);
Runnable target
Runnable 인터페이스의 클래스의 실례를 실현했다.주의해야 할 것은Thread 클래스도 Runnable 인터페이스를 실현했기 때문에Thread 클래스에서 계승된 클래스의 실례도 target으로 이 구조 방법을 전할 수 있다.String name 스레드의 이름입니다.이 이름은 Thread 실례를 만든 후 Thread 클래스의 setName 방법을 통해 설정할 수 있습니다.스레드의 이름을 설정하지 않으면 기본 스레드 이름을 사용합니다. Thread-N, N은 스레드가 만들어진 순서이고 중복되지 않는 정수입니다.ThreadGroup 그룹이 현재 설정한 스레드가 속한 스레드 그룹입니다.스레드 그룹을 지정하지 않으면 모든 스레드가 기본 스레드 그룹에 추가됩니다.루틴 그룹에 대한 세부 사항은 다음 장에서 상세하게 토론할 것이다.long stackSize 스레드 스택의 크기입니다. 이 값은 일반적으로 CPU 페이지의 정수 배입니다.예를 들어 x86의 페이지 크기는 4KB입니다.x86 플랫폼에서 기본 스레드 스택 크기는 12KB입니다.일반적인 자바 클래스는 Thread 클래스에서 계승하기만 하면 하나의 루틴 클래스가 될 수 있다.Thread 클래스의 start 방법을 통해 스레드 코드를 실행할 수 있습니다.Thread 클래스의 하위 클래스는 직접 실례화할 수 있지만, 하위 클래스에서는Thread 클래스의run 방법을 덮어써야 라인의 코드를 실행할 수 있습니다.다음 코드는 Thread 클래스를 사용하여 루틴을 만드는 예를 보여 줍니다
package mythread;
public class Thread1 extends Thread
{
public void run()
{
System.out.println(this.getName());
}
public static void main(String[] args)
{
System.out.println(Thread.currentThread().getName());
Thread1 thread1 = new Thread1();
Thread1 thread2 = new Thread1 ();
thread1.start();
thread2.start();
}
}
위의 코드는 두 개의 라인을 세웠습니다:thread1과thread2.상기 코드의 005에서 줄까지는Thread1 클래스의run 방법이다.014와 015줄에서 start 방법을 호출하면 시스템은 자동으로 run 방법을 호출합니다.007행에서this를 사용합니다.getName () 은 현재 스레드의 이름을 출력합니다. 스레드를 만들 때 스레드 이름을 지정하지 않았기 때문에 출력된 스레드 이름은 시스템의 기본값, 즉 Thread-n 형식입니다.011줄에서 주 라인의 라인 이름을 출력했습니다.위 코드의 운행 결과는 다음과 같다. mainThread-0Thread-1은 위의 출력 결과에서 알 수 있듯이 첫 번째 줄에서 출력된main은 주 라인의 이름이다.뒤의 Thread-1과 Thread-2는 각각thread1과thread2의 출력 결과입니다.참고: 모든 Java 프로그램에는 마스터 스레드가 있어야 합니다.일반적으로 이 주 라인의 이름은main이다.프로그램에서 다른 루틴을 만들어야 진정한 다중 루틴 루틴이라고 할 수 있다.즉, 다중 스레드 프로그램은 반드시 하나 이상의 스레드를 가지고 있어야 한다.Thread 클래스에는 스레드 이름을 설정할 수 있는 재부팅 구조 방법이 있습니다.구조 방법을 사용하여 라인을 만들 때 라인 이름을 설정하는 것 외에 Thread 클래스의 setName 방법으로 라인 이름을 수정할 수 있습니다.Thread 클래스의 구조 방법을 통해 스레드 이름을 설정하려면 Thread의 하위 클래스에 Thread 클래스의public Thread (String name) 구조 방법을 사용해야 합니다. 따라서 Thread의 하위 클래스에도 스레드 이름을 전달하는 구조 방법을 추가해야 합니다.다음 코드는 라인 이름을 설정하는 예를 보여 줍니다
package mythread;
public class Thread2 extends Thread
{
private String who;
public void run()
{
System.out.println(who + ":" + this.getName());
}
public Thread2(String who)
{
super();
this.who = who;
}
public Thread2(String who, String name)
{
super(name);
this.who = who;
}
public static void main(String[] args)
{
Thread2 thread1 = new Thread2 ("thread1", "MyThread1");
Thread2 thread2 = new Thread2 ("thread2");
Thread2 thread3 = new Thread2 ("thread3");
thread2.setName("MyThread2");
thread1.start();
thread2.start();
thread3.start();
}
클래스에는 두 가지 구조 방법이 있습니다. 011행:public sample2_2(String who) 이 구조 방법에는 who 매개변수가 있습니다.이 매개 변수는 현재 설정된 라인을 표시하는 데 사용됩니다.이 구조 방법에서 Thread의 기본 구조 방법인 public Thread () 를 호출합니다.016행: public sample2_2 (String who, String name) 이 구조 방법 중의 who는 첫 번째 구조 방법의 who와 의미가 같고name 매개 변수는 라인의 이름이다.이 구조 방법에서 Thread 클래스의public Thread(String name) 구조 방법, 즉 018행의 슈퍼(name)를 호출했습니다.main 방법에서thread1,thread2,thread3 세 개의 라인을 만들었습니다.그 중에서thread1은 구조 방법을 통해 스레드 이름을 설정하고,thread2는 setName 방법을 통해 스레드 이름을 수정합니다.thread3는 스레드 이름을 설정하지 않았습니다.실행 결과는 다음과 같습니다
thread1:MyThread1
thread2:MyThread2
thread3:Thread-1
위의 출력 결과에서 알 수 있듯이thread1과thread2의 스레드 이름은 모두 수정되었고,thread3의 스레드 이름은 여전히 기본값:Thread-1입니다.thread3의 스레드 이름이Thread-2가 아니라Thread-1인 이유는 026줄에thread2의Name을 지정했기 때문에thread3를 시작할 때thread3의 스레드 이름을Thread-1로 설정합니다.그래서 위의 출력 결과를 얻을 수 있다.주의: start 방법을 호출하기 전에 setName을 사용하여 스레드 이름을 설정할 수 있지만, start 방법을 호출한 후에 setName을 사용하여 스레드 이름을 수정하면 불확실성이 발생합니다. 즉, run 방법이 실행된 후에야 setName을 실행할 수 있습니다.run 방법에서 스레드 이름을 사용하려면 setName 방법이 호출되었지만 스레드 이름이 수정되지 않은 현상이 발생합니다.Thread 클래스의 start 방법은 여러 번 호출할 수 없습니다. 만약thread 1을 두 번 호출할 수 없습니다.start () 메서드.그렇지 않으면 IllegalThreadStateException 이상이 발생합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 다중 스레드를 순차적으로 실행하는 몇 가지 방법 요약Java 다중 스레드를 순차적으로 실행하는 몇 가지 방법 요약 동료는 무심결에 이 문제를 제기하고 두 가지 방법을 직접 실천했다.물론 더 좋은 방법이 있을 거야. 방법 1 이런 방법은 비교적 흔히 볼 수 있는 해결 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.