> Java > java지도 시간 > 본문

자바 스레드에서 조인 메소드 사용 소개

黄舟
풀어 주다: 2016-12-19 14:39:44
원래의
1526명이 탐색했습니다.

위의 예에서는 Thread 클래스의 Join 메소드가 여러 번 사용되었습니다. 조인 메소드의 기능이 무엇인지 짐작하셨을 것 같습니다. 예, 조인 메서드의 기능은 비동기 실행 스레드를 동기 실행으로 전환하는 것입니다. 즉, 스레드 인스턴스의 시작 메소드가 호출되면 즉시 이 메소드가 반환됩니다. 시작 메소드를 호출한 후 이 스레드가 계산한 값을 사용해야 하는 경우에는 Join 메소드를 사용해야 합니다. Join 메소드를 사용하지 않으면 start 메소드 다음에 오는 명령문이 실행될 때 스레드가 실행된다는 보장이 없습니다. 조인 메소드를 사용한 후에는 이 스레드가 종료될 때까지 프로그램이 계속 실행되지 않습니다.
다음 코드는 조인 사용을 보여줍니다.

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

다음 명령을 사용하여 위 코드를 실행합니다.

위 명령에는 조인 매개변수가 있습니다. line 실제로 하나의 매개변수만 있으면 명령줄에서 모든 매개변수를 사용할 수 있습니다. 여기서 Join은 조인 메소드가 이러한 100개 스레드의 실행을 동기화하는 데 사용됨을 나타 내기 위해 사용됩니다.

프로그램 실행 결과는 다음과 같습니다.

1 n=1000
로그인 후 복사

어떤 운영 환경에서든 위 명령을 실행하면 동일한 결과가 나타납니다: n=1000. 100 모든 스레드가 실행되어야 하므로 n은 1000과 같아야 합니다.

위 내용은 자바 스레드의 조인 방식 사용에 대한 소개입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!