main 메서드의 코드를 수행하는 쓰레드에요.
쓰레드는 사용자 쓰레드(user thread)와 데몬 쓰레드(daemon thraed)가 있어요.
프로그램은 사용자 쓰레드(user thread) 가 하나도 없을 때 프로그램은 종료되어요.
Class Ex12_2{
public static void main(String args[]){
long startTime = System.currentTimeMillis();
for(int i = 0; i < 300; i++){
System.out.printf("%S", new String("-"));
Systeom.out.print.("소요시간1:" + (System.currentTimeMillis()- startTime));
for(int i = 0 ; i < 300 ; i ++){
System.out.printf("%s", new String("*"));
System.out.printf("소요시간2:" + (System.currentTimeMillis() - startTime));
}
}
}
}
---- ouput -----
-----------------------------------------------
----------------------------------------------
----------------------------------------------
------------------------소요시간1:45***********
**********************************************
***********************************************
*************************************소요시간2:60
----------------
package chapter13;
public class Ex13_3 {
static long startTime = 0 ;
public static void main(String args[]) {
ThreadEx3_1 th1 = new ThreadEx3_1();
th1.start();
startTime = System.currentTimeMillis();
for (int i = 0; i < 300; i++)
System.out.printf("%S", new String("-"));
System.out.print("소요시간1:" + (System.currentTimeMillis() - Ex13_3.startTime));
}
}
class ThreadEx3_1 extends Thread {
public void run(){
for(int i = 0 ; i < 300 ; i++)
System.out.printf("%s", new String("|"));
System.out.print("소요시간2:" + (System.currentTimeMillis() - Ex13_3.startTime));
}
}
}
출력값
------|||-----------------------------
-------------------------------------
-----------------||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||
||||||---------------------------------
|||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||
||||||||-----------------------------
---------------||||||------||||||||-
|-|------|-|-------|||||||||||||||||
||||||||||||-|||||||||||||||||||||---
--|||||||||||||---------------
---------|||||||||||||||||||||||||||
||||||||||-----------------------||------
---------------------------------||
|||||||||||------------------||||||
||||||||||||소요시간1:57소요시간2:57
예제는 컴퓨터의 성능이나 실행환경에 의해서 실행결과는 달라질 수 있어요. 두 개의 쓰레드로 작업하여도 더 많은 시간이 걸린 이유는 두가지에요.
또한 소요시간이 항상 다른이유는 OS의 스케쥴러에 의해서 어떤 쓰레드가 얼마동안 실행될지 결정되기 때문이에요.