Muti tasking
두 가지 이상의 작업을 동시에 처리하는 것
운영체제는 멀티 태스킹을 할 수 있도록 CPU 및 메모리 자원을 프로세스마다 적절히 할당
Multi thread
하나의 프로세스가 두 가지 이상의 작업을 처리할 수 있도록 해줌
스레드가 하나라도 동작하고 있으면 프로세스는 종료되지 않음
하나의 스레드는 하나의 코드 실행 흐름
*스레드가 두 개이면 두 개의 코드 실행 흐름이 발생함
Multi process는 운영체제에서 할당받은 자신의 메모리를 가지고 실행됨으로 서로 독립적
Multi thread는 하나의 프로세스 내부에 생성되고 하나의 스레드 예외가 발생하면 프로세스 종료
스레드 필요성
ANR, 시간이 많이 걸리는 작업을 수행하는 경우 ANR 방지
Network, 데이터를 가져오는 등의 오래걸리는 작업은 무조건 Thread 사용
SurfaceView, 애니메이션 화면 처리
Thread 클래스 상속
public class ThreadTest { public static void main(String[] args) { ThreadTest ct = new ThreadTest(); ct.startFirst(); } //구현 객체 생성후 void startFirst(){ Thread thread = new Thread(); thread.start(); } //익명 객체 사용, 코드 절약 void startSecond(){ Thread thread = new Thread(){ @Override public void run(){ //실행할 코드 작성 } }; thread.start(); } class Task extends Thread{ public void run() { for(int i=0;i<20;i++){ System.out.println(i); } } } }
Runnable 인터페이스 구현
public class ThreadTest { Runnable tasks; public static void main(String[] args) { ThreadTest ct = new ThreadTest(); ct.startFirst(); } //구현 객체 생성후 void startFirst(){ tasks = new Task(); Thread thread = new Thread(tasks); thread.start(); } //익명 객체 사용, 코드 절약 void startSecond(){ Thread thread = new Thread(new Runnable() { @Override public void run() { //실행할 코드 작성 } }); thread.start(); } //람다식 void startThird(){ Thread thread = new Thread(()->{ //실행할 코드 작성 }); thread.start(); } class Task implements Runnable{ public void run() { for(int i=0;i<20;i++){ System.out.println(i); } } } }
추가 메소드
.setName("스레드명");
스레드 이름 지정
.getName();
스레드 이름 확인
.currentThread();
스레드 객체의 참조를 얻어오기
반응형
'학습 log (이론) > java' 카테고리의 다른 글
'클래스' Java #5 (0) | 2017.03.24 |
---|---|
'전위(++i) 후위(i++) 증감연산자' 필수상식 (0) | 2016.12.23 |
'List VS Map' 기본 사용법 정리 (0) | 2016.12.06 |
'java api' 기초 #1 (0) | 2016.11.27 |
'핸들러' 스레드 통신을 위한 (0) | 2016.11.13 |