java 라인의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과 같을 것이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.