Java 멀티스레드 인스턴스

지난 문장에서 모두에게 소개하였다java 다중 스레드의 실현 방식 본고를 통해 자바 다중 스레드의 실례를 소개하고 자바 다중 스레드에 관심이 있는 친구와 함께 공부하세요.
우선 다선정의 장단점을 말씀드릴게요.
다중 스레드의 이점:
1) 자원 활용도 향상
2) 어떤 경우에는 프로그래밍이 더 간단합니다
3) 프로그램 응답 속도 향상
다중 스레드의 대가:
1) 복잡한 설계
비록 일부 다중 스레드 응용 프로그램은 단일 스레드 응용 프로그램보다 간단하지만, 다른 것은 일반적으로 더욱 복잡하다.다중 스레드가 공유 데이터에 접근할 때 이 부분의 코드는 특별한 주의를 필요로 한다.라인 간의 상호작용은 왕왕 매우 복잡하다.부정확한 스레드가 동기화되어 발생하는 오류는 발견하기 어렵고 복구하기 위해 재현됩니다.
2) 컨텍스트 전환 오버헤드
CPU가 한 라인에서 다른 라인으로 전환될 때, 현재 라인의 로컬 데이터, 프로그램 포인터 등을 저장한 다음 다른 라인의 로컬 데이터, 프로그램 포인터 등을 불러와야 실행이 시작됩니다.이러한 전환은 컨텍스트 전환(context switch)이라고 합니다.CPU는 하나의 컨텍스트에서 하나의 스레드를 실행한 다음 다른 컨텍스트로 전환하여 다른 스레드를 실행합니다.상하문 전환은 결코 싸지 않다.만약 필요하지 않다면, 상하문 전환의 발생을 줄여야 한다.
정의와 시작 루틴에는 주로 두 가지 핵심 기술이 있습니다.
첫째: 스레드 클래스는 반드시java를 실현해야 한다.lang.Runnable 인터페이스 또는 자바 계승.lang.Thread 클래스, 그리고 run 방법을 실현해야 합니다. 그 중에서 run 방법은 입력도 없고 출력도 없고 이상도 없습니다.
둘째:Thread류의start방법을 호출하여 라인을 시작합니다. cpu자원을 얻으면start방법은 자동으로 라인run방법을 호출하여 운행을 시작합니다.

package test;
import java.util.Vector;
import java.util.Date;
/**
 *  
 * @author  
 *
 */
public class Threadnew
{
 /**
 * 
 * @author  
 *
 */
class ThreadA extends Thread
{
 private Date runtime;
 public void run()
 {
 System.out.println("ThreadA begin.");
 this.runtime = new Date();
 System.out.println("ThreadA end.");
 }
 }
/**
 * 
 * @author  
 *
 */
class ThreadB implements Runnable
{
 private Date runtime;
 public void run()
 {
 System.out.println("ThreadB begin.");
 this.runtime = new Date();
 System.out.println("ThreadB end.");
 }
 }
/**
 * 
 *
 */
public void starta()
{
 Thread threada = new ThreadA();
 threada.start();
}
/**
 * 
 *
 */
public void startb()
{
 Runnable threadb = new ThreadB();
 Thread thread = new Thread(threadb);
 thread.start();
 }
/**
 * 
 * @param args
 */
public static void main(String[] args)
{
 Threadnew test = new Threadnew();
 test.starta();
 test.startb();
}
}

좋은 웹페이지 즐겨찾기