JAVA-Thread-Priority

 

[Priority]

Thread : state 정보(동작 , 멈춤 ….)

state 정보를 강제 :Thread 가지는 생성자 , 함수

sleep() , join()

복잡한 계산을 여러개의 쓰레드로 나누어서 처리

그 계산 결과를 참조해서 최종적인 결과를 만들고 싶어요

Thread 동시 처리할때 (누가 먼저 수행될지 알수 없다)

main 함수 Thread ,,, 다른 여러개 Thread

main Thread 가 다른 쓰레드가 끝날때 까지 기다리게 …

기다리는 녀석이 각각의 Thread 요청 (join())


sleep , join

class Thread_join extends Thread{
	@Override
	public void run() {
		for(int i=0; i < 3000 ;i++) {
			System.out.println("----------");
		}
	}
}

class Thread_join2 extends Thread{
	@Override
	public void run() {
		for(int i=0; i < 3000 ;i++) {
			System.out.println("||||||||||");
		}
	}
}
public class Ex08_ThreadState_Join {

	public static void main(String[] args) {
		Thread_join th = new Thread_join();
		Thread_join2 th2 = new Thread_join2();
		
		th.start();
		th2.start();
		
		long starttime = System.currentTimeMillis();
		
		try {
			  th.join();
			  th2.join();
			  //main 요청 ....
			  //main 나 기다릴거야 th , th2 작업이 끝날때까지
		}catch (Exception e) {
			System.out.println(e.getMessage());
		}
		
		for(int i = 0 ; i < 3000 ;i++) {
			System.out.println("^^^^^^^^");
		}
		
		//3개의 쓰레드가 실행한 결과(총 걸린 시간)
		System.out.println("3개의 쓰레드 총 작업 시간 :");
		System.out.println(System.currentTimeMillis());
		System.out.println(starttime);
		System.out.println(System.currentTimeMillis()-starttime);
		System.out.println("Main END");
	}

}

setPriority

//우선순위: CPU 점유율을 높이겠다
//default: 5 (Max: 10, Min: 1)

class Pth extends Thread {
	@Override
	public void run() {
		for(int i = 0; i < 1000; i++) {
			System.out.println("-----------");
		}
	}
}

class Pth2 extends Thread {
	@Override
	public void run() {
		for(int i = 0; i < 1000; i++) {
			System.out.println("||||||||||");
		}
	}
}

class Pth3 extends Thread {
	@Override
	public void run() {
		for(int i = 0; i < 1000; i++) {
			System.out.println("**********");
		}
	}
}

public class Ex06_priority {
	public static void main(String[] args) {
		Pth ph = new Pth();
		Pth2 ph2 = new Pth2();
		Pth3 ph3 = new Pth3();
		
		System.out.println(ph.getPriority()); //기본값: 5
		System.out.println(ph2.getPriority());
		System.out.println(ph3.getPriority());
		
		ph.setPriority(10); //먼저 끝나길 원해요 ----------
		//ph3.setPriority(1); //나중에 **********
		
		ph.start();
		ph2.start();
		ph3.start();
		
		System.out.println("Main END...");
	}
}