java 라인의join 방법 사용 소개

2221 단어 javajoin
위의 예에서 Thread 클래스의join 방법을 여러 번 사용했습니다.나는 모두가 이미 조인 방법의 기능이 무엇인지 알아맞혔을 것이라고 생각한다.맞아요. Join 방법의 기능은 비동기적으로 실행되는 라인을 동기적으로 실행하는 것입니다.즉, 라인의 실례적인 start 방법을 호출한 후에 이 방법은 바로 되돌아옵니다. 만약에 start 방법을 호출한 후에 이 라인으로 계산된 값을 사용해야 한다면 반드시join 방법을 사용해야 합니다.만약join 방법을 사용하지 않는다면, start 방법 뒤에 있는 어떤 문장을 실행할 때, 이 라인은 반드시 실행될 것이라고 보장할 수 없습니다.join 방법을 사용하면 이 라인이 끝날 때까지 프로그램이 아래로 실행됩니다.아래의 코드는join의 용법을 보여 주었다.

package mythread;

 public class JoinThread extends Thread
 {
     public static volatile int n = 0;

     public void run()
     {
         for (int i = 0; i < 10; i++, n++)
             try
             {
                 sleep(3);  // , 3
             }
             catch (Exception e)
             {
             }                                     
     }
     public static void main(String[] args) throws Exception
     {
         Thread threads[] = new Thread[100];
         for (int i = 0; i < threads.length; i++)  // 100
             threads[i] = new JoinThread();
         for (int i = 0; i < threads.length; i++)   // 100
             threads[i].start();
         if (args.length > 0) 
             for (int i = 0; i < threads.length; i++)   // 100
                 threads[i].join();
         System.out.println("n=" + JoinThread.n);
     }
 }
루틴 2-8에 100개의 루틴을 세웠고 각 루틴은 정적 변수 n을 10씩 증가시켰다.만약 이 100개의 스레드가 모두 실행된 후에 n을 출력한다면, 이 n값은 1000이어야 한다.
    1.테스트 1
다음 명령을 사용하여 위 프로그램을 실행합니다.

1 java mythread.JoinThread
프로그램의 실행 결과는 다음과 같습니다.

1 n=442
이 실행 결과는 서로 다른 운행 환경에서 약간의 차이가 있을 수 있지만 일반 n은 1000과 같지 않습니다.위의 결과에서 이 100개의 스레드가 모두 실행되지 않고 n을 출력했다는 것을 확신할 수 있다.
    2.테스트 2
다음 명령을 사용하여 위의 코드를 실행합니다.
위의 명령줄에 매개 변수인join이 있습니다. 사실 명령줄에서 모든 매개 변수를 사용할 수 있습니다. 매개 변수가 하나만 있으면 됩니다. 여기서join을 사용합니다. 이 100개의 라인을 동기화하기 위해서입니다.
프로그램의 운행 결과는 다음과 같다.

1 n=1000
어떤 운행 환경에서 위의 명령을 실행하든지 같은 결과를 얻을 수 있다. n=1000.이것은 이 100개의 라인이 틀림없이 모두 집행되었음을 충분히 설명하기 때문에 n은 반드시 1000과 같을 것이다.

좋은 웹페이지 즐겨찾기