하드디스크와 CPU의 처리속도 차이는 엄청나다. 이를 완화시키는 것이 메모리 이다. 이 메모리상에 로딩된 프로그램이 프로세스이다.
멀티스레드- 2개이상의 스레드가 동작
동시성 또는 병렬성을 갖고 처리 동시성 - 처리할 작업의 수가 CPU코어 수보다 많을 때다. 매우 짧은 간격으로 번갈아 실행 → 동시에 처리되는 것 처럼 처리병렬성 - CPU의 코어수가 작업수 보다 많을 때 이때는 각각의 작업을 각각에 코어에 할당해 동시에 실행할 수 있기 때문에 동시에 작업이 수행됨 이를 쓰레드의 병렬성 이라 함멀티 프로세싱
멀티프로세싱은 fork를 통해 프로세스를 다수개로 늘려 여러 개의 프로그램들을 병렬로 처리
멀티스레딩
멀티스레딩은 하나의 프로그램 안에서 병렬 처리
start() 메서드는 새로운 쓰레드생성/추가를 위한 모든 준비, 새로운 쓰레드 위에서 run()메서드 실행
class MYThread extends Thread{
@Override
public void run(){
// 쓰레드 작업 내용
}
}
Thread th = new Thread();
th.start();
Runnable인터페이스 구현 객체 생성 후 Thread 생성자로 Runnable 객체 전달
Runnable 인터페이스를 구현한 클래스 생성
run 메서드 오버라이딩
Thread 객체 생성 후 매개변수에 Runnable 구현객체를 입력
thread 변수로 start()메서드 사용
new Runnable 익명구현클래스로 main(실행)함수내에서 바로 구현 가능
class Myrun implements Runnable{
@Override
public void run(){
// 쓰레드 작업 내용
}
}
Myrun mr = new Myrun();
Thread th1 = new Thread(myrun);
th1.start();
Thread th2 = new Thread(new Runnable{ //익명객체를 생성해 스레드생성
@Override
public void run(){
// 쓰레드 작업 내용
}
});
th2.start();
Thread Thread.currenThread();
String setName(String name)
String getName()
모든 스레드는 1~10 사이의 우선순위를 갖고 있다. 1이 가장 낮은 순위값 10이 가장 높은 순위값이다.
우선 순위를 지정하지 않으면 기본값으로 5의우선순위를 갖는다.
쓰레드의 동시성이 성립되어 2이상의 작업이 하나의 CPU코어에서 동작할 때 2개의 작업은 일정 시간 간격으로 번갈아면서 실행된다.
이때 우선 순위가 높으면 상대적으로 많은 시간을 할당 받는다.
void setPriority(int priority); //우선순위 설정
int getPriority(); //우선순위 정보 가져오기
현재 컴퓨터의 cpu 코어수를 가져오는 메서드
public native int availableProcessors();
일반쓰레드가 모두 종료되면 함께 종료되는 쓰레드를 데몬 쓰레드라 한다.
데몬쓰레드는 start메서드 호출전 설정되어야 한다.
데몬 쓰레드는 프로세스 내의 모든 일반 쓰레드가 종료돼야 종료된다.
setDeamon(boolean); //데몬쓰레드 설정 메서드