JAVA 스레드 사용법 상세 정보

본고는 실례와 함께 자바의 스레드 기술을 상세하게 설명했고 자바 프로그램 설계를 깊이 이해하는 데 도움이 될 것이라고 믿는다.구체적으로 다음과 같습니다.
많은 사람들이 JAVA를 공부할 때 라인에 대해 어느 정도 알고 있다. 그러나 우리가 안드로이드 개발을 접촉하기 시작했을 때 라인이 얼마나 중요한지 제대로 발견했다. 본고는 자바 라인에 대한 용법을 모두에게 공유하여 참고하도록 한다.
우선, 여러분은 반드시 라인과 프로세스가 같은 것이 아니라는 것을 분명히 해야 합니다. 프로세스는 무엇입니까?프로세스는 우리가class 파일을 실행해야 하는 것과 같고, 라인이야말로 CPU 자원을 호출해서 실행하는 것이다.하나의class 파일은 일반적으로 하나의 프로세스만 있지만, 루트는 여러 개가 있을 수 있으며, 루트의 실행은 비동기적인 실행 방식이다.
1. main 함수에서 라인을 다시 여는 방법:
예제 코드는 다음과 같습니다.

public class Thread_one {
  public static void main(String [] args){
    Run run = new Run();
    //run.run();// , 
    Thread thread = new Thread(run);
    thread.start();// , run() 
    for(int i=1; i<=20; i++){
      System.out.println(" i   :--------"+i);
    }
  }
}
class Run implements Runnable{

  @Override
  public void run() {
    for(int i=1; i<=20; i++){
      System.out.println(" i   :"+i);
    }
  }
}

2. 라인 중의sleep 방법
예제 코드는 다음과 같습니다.

public class Thread_sleep {
  /*
   *  
   */
  public static void main(String [] args){
    Runone run = new Runone();
    Thread thread = new Thread(run); 
    thread.start();
    try {
      Thread.sleep(5000);
      thread.interrupt();// 
      //thread.stop();// ,stop , , 
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
  }
}
class Runone implements Runnable{
  @Override
  public void run() {
    for(int i=1 ; i<10; i++){
      try {
        Thread.sleep(1000);
        System.out.println("-----"+new Date()+"-----");
      } catch (InterruptedException e) {
        return ;// , 
      }
    }
  }
}

여기서 특별히 한 가지 설명하자면,thread.interrupt();라인의 실행을 중단할 수 있습니다. 상대적으로 stop이 부드럽지만 라인을 닫는 가장 좋은 방법은 아닙니다. 다음은 여러분에게 다음과 같은 방식을 제공합니다.

public class Thread_stop {
  public static void main(String [] args){
    Runthree run = new Runthree();
    Thread th = new Thread(run);
    th.start();
    try {
      Thread.sleep(5000);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
    run.setStop();
  }
}
class Runthree implements Runnable{
  boolean flag;
  @Override
  public void run() {
    flag = true;
    int i = 0;
    while(flag){
      try {
        System.out.println(" ----"+(i++));
        Thread.sleep(1000);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
  }
  public void setStop(){
    flag = false;
  }  
}

다음은 라인에서의 합병과 양보를 간단하게 소개합니다.
1. 라인을 어떻게 통합하는지,join () 방법을 사용합니다
예제 코드는 다음과 같습니다.

public class Thread_join {
  /*
   *  
   */
  public static void main(String [] args){
    Runtwo run = new Runtwo();
    Thread thread = new Thread(run);
    thread.start();
    try {
      thread.join();// , 
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
    for(int i=0; i<10; i++){
      System.out.println(" :"+i);
    }
  }
}
class Runtwo implements Runnable{

  @Override
  public void run() {
    for(int i=0; i<10; i++){
      System.out.println(" :----"+i);
    }
  }  
}

2. 스레드를 양보하는 방법은 다음과 같이 Thread의 yield() 방법을 사용합니다.

public class Thread_yield {

  /** CPU
   * @param args
   */
  public static void main(String[] args) {
    Th th = new Th("aaa");
    th.start();
    for(int i = 0 ; i<=10; i++){
      System.out.println(" ----"+i);
    }
  }
}
class Th extends Thread{
  Th(){}
  Th(String s){super(s);}

  @Override
  public void run() {
    for(int i = 0; i<=10; i++){
      if(i%3!=0){
        System.out.println(" "+i);
      }else{
        System.out.println(" i="+i+"  ");
        yield();// Thread 
      }
    }
  }
}

마지막으로 라인의 우선순위에 대한 질문을 드리겠습니다. 코드는 다음과 같습니다.

public class Thread_priority {
  /*
   * priority 
   * Thread 5;Thread 10, 0
   */
  public static void main(String [] args){
    T1 t1 = new T1();
    T2 t2 = new  T2();
    t1.start();  
    //t1.setPriority(Thread.NORM_PRIORITY+3);// t1 
    t2.start();
  }
}
class T1 extends Thread{

  @Override
  public void run() {
    for(int i = 0; i<50; i++){
      System.out.println(" T1-----"+i);
    }
  }
}
class T2 extends Thread{

  @Override
  public void run() {
    for(int i = 0; i<50; i++){
      System.out.println(" T2"+i);
    }
  }  
}

여러분이 상기 코드를 통해 JAVA의 스레드 메커니즘을 기본적으로 이해했다고 믿습니다. 본고에서 기술한 바와 같이 여러분이 Java 프로그램 설계를 깊이 있게 공부하는 데 도움이 되기를 바랍니다.

좋은 웹페이지 즐겨찾기