2011-03-24 3 views
0

스레드를 구현하는 동안 나는 의심 스럽습니다. 그래서 나는 진전을하기 전에 그것을 지우는 것을 생각했습니다. 나는 새 스레드가 호출되고 다음 줄에 return 문이있는 메서드가 있습니다.자식 프로세스가 실행중인 경우 부모 프로세스는 어떻게 완료됩니까?

방법() {

호출 스레드();

return statement;

}

은 무슨 일이 일어나는가? 부모 프로세스가 자식 프로세스보다 먼저 완료됩니까?

답변

0
  1. "전화 걸기();" 자바에서 thread.start();
  2. 모든 스레드가 동일한 Java 프로세스에서 실행됩니다.
  3. 아니요, 스레드는 return 문이 발생하기 전에 완료 할 필요가 없습니다.
0

스레드 및 프로세스의 개념이 혼란스러워 보입니다. Java 프로그램은 JVM (Java Virtual Machine)에서 실행됩니다. 이 JVM은 프로세스입니다 (운영 체제의 작업 관리자에서 볼 수 있음). 프로세스는 여러 프로세스를 "포함 할"수 있습니다. 이것에 대한 자세한 내용은 this SO question that discusses the differences을 참조하십시오.

질문에 다시 답하려면 코드에서 새 스레드를 생성하고 반환합니다. 스레드가 실제로하는 일은 호출하는 메소드에 아무런 영향을 미치지 않습니다. 하위 프로세스 전에 상위 프로세스가 완료되는지 묻습니다. 글쎄. 새로운 스레드는 무엇을합니까? 매우 빠르다면 어쩌면 그렇지 않을 수도 있습니다. 그것들은 "병렬로"실행되기 때문에 우리는 우선 스레드를 사용합니다. 따라서 먼저 완료해야 할 작업에 논리를 적용해서는 안됩니다.

이미지 친구에게 전화를 걸어 무언가를 처리하도록 요청했습니다. 당신이 그를 부른 후에도 다른 일을 계속합니다. 전화가 성공했고 당신은 하루를 보냈습니다. 당신의 친구가 당신의 새 스레드입니다. 어쩌면 나중에 모든 것이 정상적으로 처리되었는지 나중에 확인하고 싶을 수도 있지만, 걱정거리가 있으면 전화를 기다리지 않아도됩니다. 스레드를 사용하지 않는 경우에 해당됩니다.

자바 동시성에 대해 진지하게 생각한다면 나는 매우 좋습니다. Java Concurrency In Practice

관련 문제