일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- simulation
- hash table
- array
- Matrix
- two pointers
- sorting
- greedy
- Data Structure
- geometry
- SQL
- Number Theory
- Stack
- database
- Math
- 자바
- Tree
- Method
- Class
- 코딩테스트
- java
- dynamic programming
- string
- Binary Tree
- bit manipulation
- Counting
- 구현
- 코테
- 파이썬
- implement
- Binary Search
- Today
- Total
목록Thread (6)
코린이의 소소한 공부노트

[동기화가 필요한 이유] 1. 멀티 쓰레드 프로세스에서는 다른 쓰레드의 작업에 영향을 미칠 수 있다. - 진행 중인 작업이 다른 쓰레드에게 간섭받지 않게 하려면 동기화가 필요하다. 2. 동기화를 하려면 다른 쓰레드에게 간섭받지 않아야 하는 문장들을 임계 영역(critical section)으로 설정한다. - 임계 영역은 락(lock)을 얻은 단 하나의 쓰레드만 출입이 가능하다.(객체 1개에 락 1개) - 락을 걸어둠으로써 데이터의 일관성을 유지하게 한다. - 임계 영역이 많을수록 성능이 떨어지기 때문에 최소한의 영역만 설정한다. [synchronized 키워드를 이용한 동기화] 1. 임계 영역을 설정하는 방법 // 1) 특정한 영역을 임계 영역으로 지정 synchronized(객체의 참조변수) { // ..

[데몬 쓰레드] boolean isDaemon() // 쓰레드 그룹이 데몬 쓰레드 그룹이면 true를 반환한다. void setDaemon(boolean on) // 쓰레드를 데몬 쓰레드 또는 사용자 쓰레드로 변경한다. on을 true로 지정하면 데몬 쓰레드가 된다. // setDaemon()은 반드시 start()를 호출하기 전에 실행되어야 한다. // start() 후에는 데몬 쓰레드로 변경할 수 없기 때문이다. // start() 전에 setDaemon()을 호출하면 IllegalThreadStateException이 발생한다. 1. 일반 쓰레드(non-daemon thread)의 작업을 돕는 보조적인 역할을 수행하는 쓰레드 2. 일반 쓰레드가 모두 종료되면 자동적으로 종료된다. 3. 가비지 컬렉터..

[쓰레드의 우선순위] 1. 작업의 중요도에 따라 쓰레드의 우선순위를 다르게 하여 특정 쓰레드가 더 많은 작업 시간을 갖도록 할 수 있다. void setPriority(int newPriority) // 쓰레드의 우선순위를 지정한 값으로 변경한다. int getPriority(); // 쓰레드의 우선쉰위를 반환한다. public static final int MAX_PRIORITY = 10; // 최대 우선순위 public static final int MIN_PRIORITY = 1; // 최소 우선순위 public static final int NORM_PRIORITY = 5; // 보통 우선순위 2. JVM은 우선순위를 10단계로 해놓은 반면 winOS는 32단계로 해놨기 때문에, 우리가 쓰레드의 우..

[실행에서의 차이] 1. 싱글쓰레드는 순서대로 실행된다. class ThreadTest{ // 싱글쓰레드 테스트 public static void main(String args[]){ for(int i=0 ; i

[쓰레드의 구현 방법] 아래 두 가지 방법 중 하나를 선택한 후 run()에 쓰레드로 작업하고자 하는 내용을 채운다. 1. Thread 클래스를 상속받는다. class MyThread1 extends Thread{ public void run(){ // Thread 클래스의 run() 오버라이딩 for(int i=0; i < 5; i++) System.out.println(getName()); // 조상인 Thread의 getName()을 호출 // this.getName()에서 this가 생략된 형태 } } 2. Runnable 인터페이스를 구현한다. (권장. 자바는 단일 상속) public interface Runnable{ public abstract void run(); } class MyThre..

[쓰레드 관련 용어 정리] 1. 프로그램(program) - 실행 가능한 파일 - HDD(하드디스크)에 저장되어있음 2. 프로세스(process) - 실행 중인 프로그램 - 메모리(RAM)에 올라와있음 - 자원(resource, 메모리, CPU 등)과 쓰레드(thread)로 구성 3. 쓰레드 - 프로세스 내에서 실제 작업을 수행하는 주체 - 모든 프로세스는 하나 이상의 쓰레드를 갖고 있다 - 프로세스 : 쓰레드 = 공장 : 일꾼 1) 싱글 쓰레드 프로세스 - 쓰레드가 1개인 프로세스 - 자원 + 쓰레드 2) 멀티 쓰레드 프로세스 - 쓰레드가 2개 이상인 프로세스 - 자원 + 쓰레드 + 쓰레드 + ... + 쓰레드 [멀티 프로세스 vs 멀티 쓰레드] 하나의 새 프로세스를 생성하는 것보다 하나의 새 쓰레드를..