투케이2K

61. (java/자바) 스레드(thread) - 스레드(thread)를 사용해 for문 합계 계산 실시 본문

Java

61. (java/자바) 스레드(thread) - 스레드(thread)를 사용해 for문 합계 계산 실시

투케이2K 2021. 1. 4. 13:27
반응형

/* =========================== */

[ 개발 환경 설정 ]

개발 툴 : Eclipse

개발 언어 : Java

/* =========================== */

/* =========================== */

[소스 코드]

 

package AI2;

class T_Thread_Task extends Thread {
    @Override
    public void run() {
        int task_sum = 0;
        for (int i = 1; i <= 5; i++) {
        	task_sum += i;            
        }
        System.out.println("[클래스] Thread 합계 : " + task_sum);
    }
}//Thread 클래스 종료

class R_Thread_Task implements Runnable {
    @Override
    public void run() {
        int task_sum = 0;
        for (int i = 1; i <= 5; i++) {
        	task_sum += i;            
        }
        System.out.println("[클래스] Runnable 합계 : " + task_sum);
    }
}//Runnable 클래스 종료

public class MainActivity9 {
	
	//초기 합계를 저장하는 변수를 선언해줍니다
	static int thread_sum = 0;
	static int runnable_sum = 0;
	static int main_sum = 0;

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("[스레드(thread) - 스레드(thread)를 사용해 for문 합계 계산 실시]");
		
		/*[설 명]
		 * 1. 일반적으로 하나의 프로세스는 하나의 스레드를 가지고 작업을 수행합니다
		 * 2. 스레드 (thread) - 스레드란 프로세스내에서 실제로 작업을 수행하는 주체를 의미합니다
		 *                   모든 프로세스(main)에는 한 개 이상의 스레드가 존재하여 작업을 수행합니다(main실행)
		 * 3. 멀티 스레드(multi thread) - 하나의 프로세스(main) 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 의미합니다
		 *                            (main 외 스레드 객체 생성 및 실행)
		 * 4. 특 징 - 멀티 스레드는 각 스레드가 자신이 속한 프로세스의 메모리를 공유하므로, 시스템 자원의 낭비가 적습니다
		 *          하나의 스레드가 작업을 할 때 다른 스레드가 별도의 작업을 할 수 있어 사용자와의 응답성도 좋습니다
		 * 5. 생 성 - Runnable 인터페이스 구현, Thread 클래스를 상속으로 2가지 방법으로 사용하실 수 있습니다
		 *          (클래스 방식 - 외부 클래스를 따로 생성해서 작업단위 작성 / 익명 방식 - 내부에서 객체 생성 및 작업단위 작성)
		 */
		
		//TODO ==== Thread 스레드 클래스 방식 생성 및 실행 ====
		Thread T_Thread_Task = new T_Thread_Task(); //Task 클래스 객체 생성
		T_Thread_Task.start();
		
		//TODO ==== Runnable 인터페이스 클래스 방식 생성 및 실행 ====
		Runnable R_Thread_Task = new R_Thread_Task(); //Task 클래스 객체 생성
		Thread R_Thread_Task_Run = new Thread(R_Thread_Task);
		R_Thread_Task_Run.start();
		
		//TODO ==== Thread 스레드 익명 객체 생성 및 실행 ====		
		Thread T_thread = new Thread() {
			@Override
			public void run() {
				for (int i = 1; i <= 5; i++) {
					thread_sum += i; //합계를 계속 더한다	                
				}
				System.out.println("[익명] Thread 합계 : " + thread_sum);
			}
		};
		T_thread.start();
	    
		//TODO ==== Runnable 인터페이스 익명 구현 및 스레드 실행 ====
		Runnable R_Runnable = new Runnable() {
			@Override
			public void run() {
				for (int i = 1; i <= 5; i++) {
					runnable_sum += i; //합계를 계속 더한다	                
				}
				System.out.println("[익명] Runnable 합계 : " + runnable_sum);
			}
		};
		Thread R_thread = new Thread(R_Runnable);
		R_thread.start();
	    
		//TODO ==== 기본 클래스 main메소드 for문 수행 ==== 
		for (int i = 1; i <= 5; i++) {
			main_sum += i; //합계를 계속 더한다	                
		}
		System.out.println("[익명] main 합계 : " + main_sum);

	}//메인 종료

}//클래스 종료

/* =========================== */

[결과 출력]

[스레드(thread) - 스레드(thread)를 사용해 for문 합계 계산 실시]

[클래스] Thread 합계 : 15

[클래스] Runnable 합계 : 15

[익명] Thread 합계 : 15

[익명] main 합계 : 15

[익명] Runnable 합계 : 15

/* =========================== */

/* =========================== */

[요약 설명]

* 1. 일반적으로 하나의 프로세스는 하나의 스레드를 가지고 작업을 수행합니다

* 2. 스레드 (thread) - 스레드란 프로세스내에서 실제로 작업을 수행하는 주체를 의미합니다

                            모든 프로세스(main)에는 한 개 이상의 스레드가 존재하여 작업을 수행합니다(main실행)

* 3. 멀티 스레드(multi thread) - 하나의 프로세스(main) 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 의미

                                         (main 외 스레드 객체 생성 및 실행)

* 4. 특 징 - 멀티 스레드는 각 스레드가 자신이 속한 프로세스의 메모리를 공유하므로, 시스템 자원의 낭비가 적습니다

               하나의 스레드가 작업을 할 때 다른 스레드가 별도의 작업을 할 수 있어 사용자와의 응답성도 좋습니다

* 5. 생 성 - Runnable 인터페이스 구현, Thread 클래스를 상속으로 2가지 방법으로 사용하실 수 있습니다

               (클래스 방식 - 외부 클래스를 따로 생성해서 작업단위 작성 / 익명 방식 - 내부에서 객체 생성 및 작업단위 작성)

/* =========================== */

반응형
Comments