티스토리 뷰

반응형

1편 스레드 객체생성 및 실행

2편 스레드 우선순위와 객체공유 및 동기화

3편 스레드 상태 및 제어


=============

알아두기

스레드란 한가지 작업을 실행하기 위해 순차적으로 실행할 코드를 실처럼 이어 놓았다고 해서 유래된 이름이다.

=============


스레드 객체생성 및 사용방법

package test;

public class Ex1 {
	public static void main(String[] args) {

		/*
		 * Runnable은 스레드가 실행할 수 있는 코드를 가지고있는 객체고
		 * 인터페이스타입이라 구현 객체를 만들어 대입해야한다.
		 * run()메소드가 정의되어있어 재정의해 스레드가 실행할 코드를 작성한다.
		 */

		// 1.인터페이스 방식
		Runnable runnable1 = new Runnable1();
		Thread thread1 = new Thread(runnable1);
                /*
		 * 보통 간단히 아래방법으로 한번에 사용한다. 람다식 방법은 람다식 부분에서~
		 * Thread thread1 = new Thread(new Runnable() {
		 * 	@Override public void run() {
		 * } });
		 */

		// 2.상속 방식
		Runnable2 runnable2 = new Runnable2();

		/*
		 * 객체생성 후 Start()메소드를 이용하여 실행대기 상태로 만든다.
		 * Start()를 호출한다고 바로시작되는것이아니라 실행대기
		 * 상태를 만들어 스케줄링에 선택이되어지면 스레드가 실행된다.
		 */
		thread1.start();
		runnable2.start();
// 스레드 이름설정 및 가져 오는 방법 System.out.println(thread1.getName()); // 결과: Thread-0 thread1.setName("스레드1"); System.out.println(thread1.getName()); // 결과: 스레드1 /* * 스레드객체의 참조를 가지고있지 않다면 currentThread로 * 현재 스레드의 참조를 얻을수 있다. */ Thread thread3 = Thread.currentThread(); System.out.println(thread3.getName()); // 결과: main for (int i = 0; i < 10; i++) { System.out.println("메인스레드 실행중: " + i); } } public static class Runnable1 implements Runnable { @Override public void run() { // TODO Auto-generated method stub for (int i = 0; i < 10; i++) { System.out.println("Runnable1 작업스레드1 실행중: " + i); } } } public static class Runnable2 extends Thread { @Override public void run() { for (int i = 0; i < 10; i++) { System.out.println("Runnable2 작업스레드2 실행중: " + i); } } } }


실행결과

Thread-0

스레드1

main

메인스레드 실행중: 0

메인스레드 실행중: 1

메인스레드 실행중: 2

메인스레드 실행중: 3

메인스레드 실행중: 4

메인스레드 실행중: 5

메인스레드 실행중: 6

Runnable1 작업스레드1 실행중: 0

Runnable2 작업스레드2 실행중: 0

Runnable1 작업스레드1 실행중: 1

Runnable1 작업스레드1 실행중: 2

메인스레드 실행중: 7

Runnable1 작업스레드1 실행중: 3

Runnable2 작업스레드2 실행중: 1

Runnable1 작업스레드1 실행중: 4

메인스레드 실행중: 8

Runnable1 작업스레드1 실행중: 5

Runnable2 작업스레드2 실행중: 2

Runnable1 작업스레드1 실행중: 6

메인스레드 실행중: 9

Runnable1 작업스레드1 실행중: 7

Runnable2 작업스레드2 실행중: 3

Runnable1 작업스레드1 실행중: 8

Runnable2 작업스레드2 실행중: 4

Runnable1 작업스레드1 실행중: 9

Runnable2 작업스레드2 실행중: 5

Runnable2 작업스레드2 실행중: 6

Runnable2 작업스레드2 실행중: 7

Runnable2 작업스레드2 실행중: 8

Runnable2 작업스레드2 실행중: 9

반응형
댓글
최근에 올라온 글
최근에 달린 댓글