이번 글에서는 thread를 사용해 producer와 consumer를 구현하는 방법에 대해 알아보도록 하겠습니다. 1. Producer & Consumer producer & consumer problem은 최소 1개씩의 producer & consumer thread가 있다고 가정합니다. 예를 들어 위와 같이 producer & consumer thread가 존재할 때, producer thread는 message를 생성해 queue에 발행합니다. consumer thread는 queue에 발행된 message를 FIFO 순서대로 처리해 작업을 수행하도록 구현하고자 합니다. 이때 producer는 queue가 꽉 차있을 경우 더이상 message를 발생하지 않고, consumer는 반대로 queue가..
이번 글에서는 multi threading 환경에서 synchronization을 사용하는 방법에 대해 알아보도록 하겠습니다. 1. Synchronized Keyword synchronized keyword는 다음 4가지 유형의 blocks에서 사용될 수 있습니다. • Instance Method • Static Method • Instance Method Code Block • Static Method Code Block 위의 4가지 유형의 특징 및 사용방법은 다음과 같습니다. 1-1) Instance Method instance method 동기화를 사용하면, instance 별로 동기화를 이루게됩니다. public synchronized void add(int value) { this.count +..
이번 글에서는 multi threading 환경에서 synchronization을 사용하는 방법에 대해 알아보도록 하겠습니다. 1. Thread Synchronization multi threading 환경에서 synchronization을 이해하는 것은 굉장히 중요합니다. 예를 들어 입력받은 text를 slice하는 작업을 수행하는 StringReverseThread가 있다고 가정해보겠습니다. public class StringReverseThread extends Thread { private List names; private String message; public StringReverseThread(List names, String message){ this.names = names; this...
이번 글에서는 thread를 사용하는 방법에 대해 알아보도록 하겠습니다. 1. Using Thread thread를 사용하는 방법에는 여러가지 방법들이 존재합니다. 1-1) thread priority 먼저, multi threads 들의 우선순위 할당을 통해 한정된 CPU 자원을 threads 별로 분배할 수 있습니다. 예를 들어 아래와 같이 Runnable을 구현한 구현체가 존재할 때 public class CalculatorRunnable implements Runnable { long value; CalculatorRunnable(long value) { this.value = value; } @Override public void run() { long startTime = System.curr..
이번 글에서는 thread는 생성하는 방법에 대해 알아보도록 하겠습니다. 1. Creating Thread java에서 thread를 생성하는 방법에는 크게 2가지가 있습니다. 먼저 아래와 같은 main thread가 존재한다고 가정해보겠습니다. public class ch_3 { public static void main(String[] args) throws InterruptedException { for(int i=0; i
이번 글에서는 static keyword에 대해 알아보도록 하겠습니다. 1. Static Keyword java에서 static 변수는 class 단위로 값을 할당할때 사용할 수 있습니다. 😎 1-1) by object 예를 들어 아래와 같이 Emp Class가 있다고 가정해보겠습니다. 또한, 모든 ceo 변수의 값은 "suwon"이라고 가정하겠습니다. class Emp { int id; int salary; String ceo; } 위의 클래스를 사용한 main 함수가 아래와 같을때 public class Demo { public static void main(String[] args) { Emp minho = new Emp(); minho.id = 8; minho.salary = 4000; minho..
이번 글에서는 multi threading에 대해 알아보도록 하겠습니다. 1. Process & Thread 현대의 computer는 대부분 multiple core를 사용해 작업을 수행합니다. 따라서 multiple core의 최대치의 성능을 발휘하기 위해선 program 을 작성할때 이를 고려해 작성해야 합니다. 1-1) one process & one thread 일반적으로 하나의 program은 1개의 process와 1개의 thread를 사용합니다. task manager의 process 탭을 살펴보면 위와 같이 실행되고 있는 program 별로 process가 생성되어 있는 것을 확인할 수 있습니다. performance 탭에서는 현재 실행되고 있는 process & thread의 갯수를 확인..