21.01.20-41일차
🚅 쓰레드(thread)
🚋 프로세스와 쓰레드(process & thread)
👉 프로세스: 실행 중인 프로그램, 자원(resources(메모리. CPU...))과 쓰레드로 구성
👉 쓰레드: 프로세스 내에서 실제 작업을 수행.(모든 프로세스는 최소한 하나의 쓰레드를 가지고 있다)
👉 싱글 쓰레드 프로세스 = 자원 + 쓰레드
👉 멀티 쓰레드 프로세스 = 자원 + 쓰레드 + 쓰레드 + ... + 쓰레드
👉 하나의 새로운 프로세스를 생성하는 것보다 하나의 새로운 쓰레드를 생성하는 것이 더 적은 비용이 든다.
🚋 멀티쓰레드의 장단점
👉장점:
시스템 자원을 보다 효율적으로 사용할 수 있다,
사용자에 대한 응답성(responseness)이 향상됨,
작업이 분리되어 코드가 간결해짐
👉단점:
동기화(synchronization)에 주의,
교착상태(dead_lock)가 발생하지 않도록 주의,
기아문제 : 각 쓰레드가 효율적으로 고르게 실행될 수 있게 해야함
🚋 쓰레드의 구현과 실행
- Thread클래스를 상속
class MyThread extends Thread{ public void run() { // Thread클래스의 run()을 오버라이딩 /* 작업내용 */ } }
MyThread t1 = new MyThread(); // 쓰레드의 생성 t1.start(); // 쓰레드의 실행
- Runnable인터페이스를 구현
class MyTread2 implements Runnable { public void run() { // Runnable인터페이스의 추상메서드 run()을 구현 /* 작업내용 */ } }
Runnable r = new MyThread2(); Thread t2 = new Thread(r); // Thread(Runnable r) // 한줄로하면 Thread t2 = new Thread(new MyThread2)); t2.start();
🚋 쓰레드의 실행 - start()
- 쓰레드를 생성한 후에 start()를 호출해야 쓰레드가 작업을 시작함
ThreadEx1_1 t1 = new ThreadEx1_1(); ThreadEx1_1 t2 = new ThreadEx1_1(); . t1.start(); t2.start();
🚋 싱글쓰레드 & 멀티쓰레드
🚃 싱글쓰레드
class ThreadTest { public static void main(String[] args) { for(int i=0; i< 300; i++) System.out.print(new String("-")); } for(int i=0; i< 300; i++) System.out.print(new String("|")); } } }
🚃 멀티쓰레드
public class ThreadTest { public static void main(String[] args) { ThreadEx1 th1 = new ThreadEx1(); ThreadEx2 th2 = new ThreadEx2(); . th1.start(); th2.start(); } } class ThreadEx1 extends Thread { public void run() { for(int i=0; i< 300; i++) System.out.print(new String("-")); } } } class ThreadEx1 extends Thread { public void run() { for(int i=0; i< 300; i++) System.out.print(new String("|")); } } }
🚋 쓰레드의 우선순위(priority of thread)
- 작업의 중요도에 따라 쓰레드의 우선순위를 다르게 하여 특정 쓰레드가 더 많은 작업시간을 갖게 할 수 있다.
- 우선순위가 같은 경우
- A의 우선순위가 높은 경우
🚋 쓰레드 그룹
- 서로 관련된 쓰레드를 그룹으로 묶어서 다루기 위한 것
- 모든 쓰레드는 반드시 하나의 쓰레드 그룹에 포함되어 있어야 한다.
- 쓰레드 그룹을 지정하지 않고 생성한 쓰레드는 'main쓰레드 그룹'에 속한다.
- 자신을 생성한 쓰레드(부모 쓰레드)의 그룹과 우선순위를 상속받는다.
🚋 쓰레드 그룹의 메서드
🚋 출처
자바의 정석 책 & 유튜브
Author And Source
이 문제에 관하여(21.01.20-41일차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ham6482/21.01.20-41일차-qasnpd1z저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)