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