java 스레드 생성 다중 스레드 상세 정보

Java 스레드 클래스도 Object 클래스입니다. 그 실례는 모두 java에서 계승됩니다.lang.Thread 또는 하위 클래스다음 방법으로 자바에서 하나의 라인을 만들 수 있습니다. 이 라인을 실행하면 이 라인의 start () 방법을 호출할 수 있습니다.
Tread thread = new Thread();
thread.start();
위의 예에서, 우리는 라인을 위한 실행 코드를 작성하지 않았기 때문에, 이 방법을 호출하면 라인이 종료됩니다.
루틴이 실행될 때 실행되는 코드는 두 가지 방식이 있습니다. 하나는 Thread 하위 클래스를 만드는 실례를 만들고 run을 다시 쓰는 방법입니다. 두 번째는 클래스를 만들 때 Runnable 인터페이스를 실현하는 것입니다.다음은 이 두 가지 방법을 구체적으로 설명할 것이다.
Thread 하위 클래스 만들기
Thread 하위 클래스를 만드는 실례를 만들고 run 방법을 다시 씁니다. run 방법은 start () 방법을 호출한 후에 실행됩니다.다음과 같은 방법으로 위의 Thread 하위 클래스를 만들고 실행할 수 있습니다.

public class MyThread extends Thread {
  public void run(){
   System.out.println("MyThread running");
  }
}
MyThread myThread = new MyThread();
myTread.start();
루틴이 시작되면start 방법은 즉시 되돌아오고run 방법이 실행될 때까지 기다리지 않습니다.마치 런 방법이 다른 cpu에서 실행되는 것 같다.run 메서드가 실행되면 MyThread running 문자열이 인쇄됩니다.
다음과 같이 Thread의 익명 하위 클래스를 만들 수도 있습니다.

Thread thread = new Thread(){
  public void run(){
   System.out.println("Thread Running");
  }
};
thread.start();
새 루틴의run 방법이 실행되면 컴퓨터는 문자열 "Thread Running"을 출력합니다.
Runnable 인터페이스 구현
두 번째 루틴 실행 코드를 작성하는 방식은java를 새로 만드는 것입니다.lang.Runnable 인터페이스의 클래스의 실례입니다. 실례적인 방법은 라인에서 호출될 수 있습니다.다음은 예입니다.

public class MyRunnable implements Runnable {
  public void run(){
  System.out.println("MyRunnable running");
  }
}
런() 방법을 실행할 수 있도록 Thread 클래스의 구조 함수에 MyRunnable의 실례 대상을 전송해야 합니다.예는 다음과 같습니다.
Thread thread = new Thread(new MyRunnable());
thread.start();
루틴이 실행될 때, Runnable 인터페이스를 실현하는 run 방법을 호출합니다.이전 예에서는 "My Runnable running"이 인쇄됩니다.
또한 다음과 같이 Runnable 인터페이스를 구현하는 익명 클래스를 만들 수 있습니다.

Runnable myRunnable = new Runnable(){
  public void run(){
   System.out.println("Runnable running");
  }
}
Thread thread = new Thread(myRunnable);
thread.start();
하위 클래스를 만듭니까 아니면 Runnable 인터페이스를 만듭니까?
이 두 가지 방식이 어떤 것이 좋은지 확실한 답은 하나도 없다. 그것들은 모두 요구를 만족시킬 수 있다.제 개인적인 의견으로는 Runnable 인터페이스를 실현하는 방법이 더 좋습니다.루틴 탱크는 런블 인터페이스의 루틴을 효과적으로 관리할 수 있기 때문에 루틴 탱크가 가득 차면 새 루틴은 루틴 탱크가 비울 때까지 줄을 서서 실행을 기다릴 것이다.만약에 스레드가 Thread 서브클래스를 실현하는 것을 통해 이루어진다면 이것은 좀 복잡할 것이다.
때때로 우리는 Runnable 인터페이스와 Thread 서브클래스 두 가지 방식을 동시에 융합시켜야 한다.예를 들어 Thread 하위 클래스를 구현한 실례는 여러 개의 Runnable 인터페이스를 구현한 라인을 실행할 수 있다.전형적인 응용은 바로 스레드 탱크다.
흔한 오류: start () 방법이 아닌run () 방법을 호출합니다.
하나의 라인을 만들고 실행하는 데 자주 발생하는 오류는 start () 방법이 아니라 라인을 호출하는 run () 방법입니다. 아래와 같습니다.
Thread newThread = new Thread(MyRunnable());
newThread.run(); //should be start();
처음에는 타당하지 않다고 느끼지 못할 것이다. 왜냐하면 run () 방법은 확실히 네가 원하는 대로 호출되었기 때문이다.그러나, 사실상, run () 방법은 새로 만든 라인에서 실행된 것이 아니라, 새로 만든 라인의 현재 라인에서 실행된 것입니다.즉 위의 두 줄 코드의 라인을 실행하는 것이다.생성된 새 스레드를run () 방법으로 실행하려면 새 스레드의start 방법을 호출해야 합니다.
스레드 이름
하나의 라인을 만들 때, 라인의 이름을 지정할 수 있습니다.그것은 우리가 서로 다른 노선을 구분하는 데 도움이 된다.예를 들어 시스템에 여러 개의 스레드가 기록되어 있다면.out, 우리는 라인 이름을 통해 어느 라인이 출력되고 있는지 쉽게 찾을 수 있습니다.예는 다음과 같습니다.

MyRunnable runnable = new MyRunnable();
Thread thread = new Thread(runnable, "New Thread");
thread.start();
System.out.println(thread.getName());
주의해야 할 것은 MyRunnable은 Thread의 하위 클래스가 아니기 때문에 MyRunnable 클래스는 getName () 방법이 없습니다.다음 방법으로 현재 스레드에 대한 참조를 얻을 수 있습니다.
Thread.currentThread();
String threadName = Thread.currentThread().getName();
스레드 코드 예:
이것은 작은 예이다.우선 실행 main () 방법의 스레드 이름을 출력합니다.이 스레드 JVM은 할당됩니다.그리고 10개의 라인을 열어 1~10이라고 명명합니다.모든 스레드가 자신의 이름을 출력한 후에 종료합니다.

public class ThreadExample {
 public static void main(String[] args){
   System.out.println(Thread.currentThread().getName());
   for(int i=0; i<10; i++){
     new Thread("" + i){
      public void run(){
       System.out.println("Thread: " + getName() + "running");
      }
     }.start();
   }
 }
}
주의해야 할 것은, 비록 시작 라인의 순서는 질서정연하지만, 실행하는 순서는 질서정연하지 않다는 것이다.즉, 1번 라인이 반드시 자신의 이름을 컨트롤러에 출력하는 첫 번째 라인은 아니다.이것은 라인이 순서가 아니라 병행 실행이기 때문이다.Jvm는 운영체제와 함께 스레드의 실행 순서를 결정했는데 그와 스레드의 시작 순서가 반드시 일치하는 것은 아니다.
이상은 자바 라인에 대한 자료 정리입니다. 후속적으로 관련 자료를 계속 보충합니다. 본 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기