java 스레드를 Thread 클래스로 만드는 방법

5250 단어 java 스레드thread
Java에서 스레드를 만드는 방법은 Thread 클래스를 사용하고 Runnable 인터페이스를 사용하는 두 가지가 있습니다.Runnable 인터페이스를 사용할 때 Thread 인스턴스를 만들어야 합니다.따라서 Thread 클래스를 통해서든 Runnable 인터페이스를 통해서든 라인을 구축하려면,Thread 클래스나 그 하위 클래스의 실례를 만들어야 한다.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 group
현재 설정된 스레드가 속한 스레드 그룹입니다.스레드 그룹을 지정하지 않으면 모든 스레드가 기본 스레드 그룹에 추가됩니다.루틴 그룹에 대한 세부 사항은 다음 장에서 상세하게 토론할 것이다.
    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 ~ 008 줄은 Thread1 클래스의run 방법이다.014와 015줄에서 start 방법을 호출하면 시스템은 자동으로 run 방법을 호출합니다.007행에서this를 사용합니다.getName () 은 현재 스레드의 이름을 출력합니다. 스레드를 만들 때 스레드 이름을 지정하지 않았기 때문에 출력된 스레드 이름은 시스템의 기본값, 즉 Thread-n 형식입니다.011줄에서 주 라인의 라인 이름을 출력했습니다.
위 코드의 실행 결과는 다음과 같습니다

main
Thread-0
Thread-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-2
위의 출력 결과에서 알 수 있듯이thread1과thread2의 스레드 이름은 모두 수정되었고,thread3의 스레드 이름은 여전히 기본값입니다:Thread-2.thread3의 스레드 이름이Thread-1이 아니라Thread-2인 이유는 024줄이thread2를 만들 때 Thread-1을 점용했기 때문입니다. 따라서 025줄이thread3를 만들 때thread3의 스레드 이름을Thread-2로 설정합니다.그리고 026 줄에서 thread2의 스레드 이름을 MyThread2로 수정합니다.그래서 위의 출력 결과를 얻을 수 있다.
주의: start 방법을 호출하기 전에 setName을 사용하여 스레드 이름을 설정할 수 있지만, start 방법을 호출한 후에 setName을 사용하여 스레드 이름을 수정하면 불확실성이 발생할 수 있습니다. 즉, run 방법이 실행된 후에야 setName을 실행할 수 있습니다.run 방법에서 스레드 이름을 사용하려면 setName 방법이 호출되었지만 스레드 이름이 수정되지 않은 현상이 발생합니다.
Thread 클래스의 start 방법은 여러 번 호출할 수 없습니다. 만약thread 1을 두 번 호출할 수 없습니다.start () 메서드.그렇지 않으면 IllegalThreadStateException 이상이 발생합니다.

좋은 웹페이지 즐겨찾기