Java Thread
스레드란??
현재 이 게시물을 보는 사용자가 c언어로 프로그래밍 하고, 콘솔에서 결과물을 확인하고 있다고 가정하자.
콘솔창에는 단 하나의 커서와 단 하나의 화면이 존재한다.
하지만 사용자는 여러가지 행동을 동시에 표현하고 싶다. 그렇지만, while문으로는 한계가 있다는 것을 느낄 수 있을 때가 다가온다.
그때 스레드라는 개념을 보면 신세계를 맞이 할 수 있을것이고, 그 때 이 내용을 본다면 더 와닿고 잘 응용할 수 있는 밑거름이 될 것이다.
스레드는 결국, 하나의 프로그램(프로세스)에서 여러 행동을 할 수 있도록 도와주는 역할을 한다.
Java든, C든 C++이든 어떤 언어간에 Thread의 코딩 방식이 다를 뿐, 개념은 모두 매 한가지이다.
스레드 개념 :: http://www.crocus.co.kr/481
스레드를 더 알아보고 싶다면, 이 기초 내용을 넘어서서 응용할 수 있는 상황,
그리고 응용할 때 부딪히는 내용들에 대해 알고 싶다면 아래 주소를 클릭하여 개념을 확인해 보길 바란다.
다중 스레드를 이용할 때 필요한 장치 (뮤텍스) :: http://www.crocus.co.kr/486
다중 스레드를 이용할 때 필요한 장치 (세마포어) :: http://www.crocus.co.kr/487
위의 장치를 이용할 때 생기는 현상 (데드락) :: http://www.crocus.co.kr/524
run이라는 메소드는 extends Thread를 통해 스레드 클래스를 상속하면 스레드 클래스 내부 메소드로 존재하는데
start()를 통해 실행하면 스레드는 run을 통해 자신의 CPU 리소스를 할당받는 차례마다 for문을 돌리게 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | package JavaBasic; public class Jmain{ public static void main(String []args) { class Car extends Thread{ String carName; int pos; Car(String carName,int pos){ this.carName = carName; this.pos = pos; } public void run(){ for(int i = 0; i <= 30; i++) { try{ //Thread.sleep(10); System.out.println(carName + " 전진 거리 :: " + (pos+i)); } catch(Exception e){ } } } } Car car1 = new Car("car1",15); Car car2 = new Car("car2",20); Car car3 = new Car("car3",0); car1.start(); car2.start(); car3.start(); } } // This source code Copyright belongs to Crocus // If you want to see more? click here >> | Crocus |
(마지막 부분은 생략하였습니다.)
결과를 보면 알 수 있듯이, car1부터시작해서 car3으로 끝나는것이 아닌,
car1->car3->car2로 출발하여 제 각각 자신이 CPU 리소스를 할당 받을 때 마다 움직임을 확인 할 수 있다.
'Basic > Java' 카테고리의 다른 글
추상 클래스와 인터페이스 개념 및 예제 코드 (0) | 2016.12.01 |
---|---|
자바 클래스 상속(Java Class Inheritance) (0) | 2016.12.01 |
Math 클래스 개념 및 예제 코드 (0) | 2016.11.30 |
래퍼 클래스 개념 및 예제 코드 (0) | 2016.11.30 |
Java를 이용한 메모장 만들기 (5) | 2016.11.28 |