Recent Posts
Link
250x250
오늘보다 더 나은 내일의 나에게_
비전공자의 IoT 국비 교육 수강일지 Day_20 본문
728x90
쓰레드(Thread)
Multitasking = Multi(다중) + tasking(작업)
> 다수의 작업을 동시에 처리
보통의 응용프로그램은 여러(multi) 작업(task)을 동시에 실행
쓰레드(thread) thread of control
: 프로그램 코드를 실행하는 하나의 제어
: 하나의 쓰레드로 하나의 작업만 처리 가능
여러 개의 작업을 동시에 처리하려면?
-> 쓰레드가 여러 개 필요
멀티프로세싱(Multi Processing)_싱글 스레드
: 하나의 응용프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 기법
멀티스레딩(Multi threading)
: 하나의 응용프로그램을 동시처리가 가능한 여러 작업으로 분할하고 작업의 개수만큼 스레드를 생성하여 각 스레드로 하여금 하나의 작업을 처리하도록 하는 기법
쓰레드 작성
1. Thread 클래스
Blitzcrank 클래스
더보기package Thread; //동시에 여러 스킬을 사용할 수 없음 //싱글스레드 -> 기본클래스 public class Blitzcrank { private String skill; //현재 사용중인 스킬 저장 필드 public Blitzcrank(String key) { //특정한 스킬을 사용할 블츠객체 생성 skill = key; } //스킬 사용 메서드 public void run() { System.out.println("입력 키 : " + skill); for(int i = 1;i <= 3;i++) { System.out.println(skill + "스킬 사용 중 : " + i + "s"); } System.out.println(skill + "스킬 사용 종료"); }//end of run() }
Ari 클래스
더보기package Thread; //동시에 여러개의 스킬을 사용할 수 있음 -> 멀티태스킹 -> 멀티프로세싱 / 멀티스레드(자바) //멀티스레드 작성 첫번째 방법1. Thread 클래스를 상속 public class Ari extends Thread{ private String skill; public Ari(String key) { skill = key; } //Thread클래스 run() 메서드 오버라이딩(재정의) //run() -> 스레드(다중작업) 코드 //스레드는 run() 메서드 에서부터 실행을 시작하고 run() 종료되면 스레드도 종료 //오버라이딩 하지않으면 Thread 클래스에 작성된 run()을 호출하게 되며 //이때 run()은 아무일도 하지 않고 스레드를 바로 종료 public void run() { System.out.println("입력 키 : " + skill); for(int i = 1;i <= 3;i++) { System.out.println(skill + "스킬 사용 중 : " + i + "s"); } System.out.println(skill + "스킬 사용 종료"); } }
Main 클래스
더보기package Thread; public class Main { public static void main(String[] args) { String[] key = {"Q", "W", "E"}; for (int i = 0; i < key.length; i++) { Blitzcrank b = new Blitzcrank(key[i]); b.run(); } System.out.println("==========================="); for (int i = 0; i < key.length; i++) { Ari a = new Ari(key[i]); //start() 메서드를 호출하면 스레드를 동작 시킴 //스레드가 실행을 시작하도록 하기 위해선는 꼭 start() 메서드를 호출해야함! //start()메서드는 절대로 오버라이딩 하면 안됨!! //start : 생성된 스레드 객체를 스케줄링이 가능한 상태로 전화하도록 JVM에게 지시 //스케줄링 : 메모리에 적재된 프로그램을 CPU(연산장치)가 실행할수 있도록 운영체제가 스레드에게 CPU 할당 //스케줄링에 의해서 해당 스레드가 선택이되면 JVM에 의해서 run() 메서드가 호출되어 실행이 됨 a.start(); } } }
2. Runnable 인터페이스
Ari2 클래스
더보기package Thread; public class Ari2 implements Runnable { private String skill; public Ari2(String key) { skill = key; } //Thread클래스 run() 메서드 오버라이딩(재정의) //run() -> 스레드(다중작업) 코드 //스레드는 run() 메서드 에서부터 실행을 시작하고 run() 종료되면 스레드도 종료 //오버라이딩 하지않으면 Thread 클래스에 작성된 run()을 호출하게 되며 //이때 run()은 아무일도 하지 않고 스레드를 바로 종료 public void run() { System.out.println("입력 키 : " + skill); for(int i = 1;i <= 3;i++) { System.out.println(skill + "스킬 사용 중 : " + i + "s"); } System.out.println(skill + "스킬 사용 종료"); } }
Main 클래스
더보기package Thread; public class Main { public static void main(String[] args) { String[] key = {"Q", "W", "E"}; System.out.println("============================="); for (int i = 0; i < key.length; i++) { Thread thread = new Thread(new Ari2(key[i])); thread.start(); } } }
채팅 프로그램 만들기
Thread
Socket
서버와 클라이언트가 데이터를 송수신하는 컴퓨터의 입출구
Stream
하드디스크, 네트워크 및 메모리 등과 같이 데이터 소스나 목적지 사이에 데이터를 주고받기 위하여 형성된 채널을 통하여 일련의 데이터가 흘러 들어가거나, 흘러 들어오는 것
Buffer
어떤 장치에서 다른 장치로 데이터를 송신할 때 일어나는 시간의 차이나 데이터 흐름의 속도 차이를 조정하기 위해 일시적으로 데이터를 기억시키는 장치(임시 기억 공간)
728x90
'비전공자의 코딩일지' 카테고리의 다른 글
비전공자의 IoT 국비 교육 수강일지 Day_25 (0) | 2022.01.21 |
---|---|
비전공자의 IoT 국비 교육 수강일지 Day_21~24 (0) | 2022.01.20 |
비전공자의 IoT 국비 교육 수강일지 Day_19 (0) | 2022.01.13 |
비전공자의 IoT 국비 교육 수강일지 Day_18 (0) | 2022.01.12 |
비전공자의 IoT 국비 교육 수강일지 Day_17 (0) | 2022.01.11 |
Comments