프로세스란?
실행중인 프로그램 , 하나이상의 스레드로 생성
스레드란?
프로세스 내에서 할당된 자원을 이용해 실제 작업을 수행하는 작업 단위 ,
모든 프로세스는 하나 이상의 스레드를 가지며 각각 독립적인 작업 단위를 가짐
멀티프로세스 vs 멀티스레드
멀티 프로세스 : 각각의 프로세스를 독립적으로 실행
멀티 스레드 : 하나의 프로세스내에서 여러 스레드가 동시에 작업수행
런에이블 상속
class MyThread implements Runnable{//런에이블 상속받기
@Override
public void run() {
for(int i=0 ; i<100 ; i ++) {
System.out.println("i =" + i );
}
}
}
public class Thread01 {
public static void main(String[] args) {
System.out.println("---main start---");
MyThread m1 = new MyThread();
MyThread m2 = new MyThread();
//m1.run();
//m2.run(); // 이건 그냥 메인이 돌아가는것 뿐
Thread t1 = new Thread(m1);
Thread t2 = new Thread(m2);
//쓰레드에 마이쓰레드라는 객체를 넣어준다 .
//Thread.start() ->자동으로 Run() 호출
t1.start();
t2.start();
//번갈아가면서 작동을 하는 모습
//스레드는 메인에서 1개 ,런 실행되는 t1, t2 두개 총 세개
//메인먼저실행 ( 스타트 스탑 출력 ) 후에 번갈아가면서 t1 t2 출력
System.out.println("---main stop---");
}
}
스레드 상속
class MyThread02 extends Thread { // 스레드 상속받기
public MyThread02(String name) {
super(name); // 헷갈리니깐 이름을 정해줌
}
@Override // Thread클래스 상속받음
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println(this.getName() + "=" + i);
}
System.out.println(this.getName() + "끝");
}
}
public class Thread02 {
public static void main(String[] args) {
MyThread02 m1 = new MyThread02("야옹");
MyThread02 m2 = new MyThread02("멍멍");
m1.setPriority(Thread.MIN_PRIORITY);
m2.setPriority(Thread.MAX_PRIORITY);
// 숫자가 높을수록 우선순위를 둠
m1.start();
m2.start();
// 번갈아가면서 야옹 멍멍하면서 끝남
}
}
run() 은 main() 위로 쌓임 ,
start() 는 새로운 스레드 형성하고 그위에 run()메소드가 쌓임
스레드 스케쥴링?
스레드 갯수가 코어의 수보다 많을 경우 어떤순서로 동시성을 실행할것인가 결정
스케쥴링에 의해 스레드들은 번갈아가면서 run()메소드 조금씩 실행
스케쥴링 방식
- priprity
우선순위가 높은 스레드가 작업시간을 더많이 가지도록 하는스케쥴링 방식 1~10까지 우선순위 부여가능
(기본값은 5)
- Round-Robin
시간할당량을 정하여 하나의 스레드를 정해진 시간만큼 실행시키는 방식
public class Thread03 {
public static void main(String[] args) {
for(int i = 1; i<50 ; i ++) {
try {
Thread.sleep(1000); //슬립: 실행중인 스레드를 정지시킴
//밀리세컨드 단위로 . 1000 = 1초
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print("ㅇ(^ㅁ^)ㅇ");
}
}
}
'JAVA' 카테고리의 다른 글
[JAVA]MVC패턴 (0) | 2024.03.21 |
---|---|
[JAVA]네트워크 (0) | 2024.03.08 |
[JAVA] Collection(List , set , Map) (1) | 2024.02.27 |
[JAVA]입출력( I / O ) #2 (1) | 2024.02.26 |
[JAVA]입출력( I / O ) (0) | 2024.02.22 |