본문 바로가기
학습 log (이론)/java

'스레드 기초' Java #11

by abbear25 2017. 4. 10.

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