☕️ Java

이번 글에서는 실제 코드를 통해 싱글쓰레드와 멀티쓰레드에 대해 알아보도록 하겠습니다. 두 개의 작업이 있습니다. 해당 작업을 하나의 쓰레드로 처리하는 경우와 두 개의 쓰레드로 처리하는 경우를 가정하도록 하겠습니다. 하나의 쓰레드로 두 개의 작업을 처리하는 경우에는 한 작업을 모두 마친 후에 다른 작업을 시작하지만, 두 개의 쓰레드로 작업하는 경우에는 짧은 시간동안 2개의 쓰레드가 번갈아가며 작업을 수행하기에, 동시에 두 작업이 처리되는 것과 같이 느끼게 됩니다. 싱글 코어에서 하나의 쓰레드로 두 개의 작업을 실행한 시간과 두개의 쓰레드로 두개의 작업을 수행한 시간을 비교해 보면 거의 동일하지만, 미약하게나마 두 개의 쓰레드로 작업한 시간이 하나의 쓰레드로 작업한 시간보다 더 걸립니다. 이유는 쓰레드간의 ..
쓰레드 구현 자바에서 쓰레드를 구현하기 위햐서는 Thread 클래스를 상속받거나 Runnable 인터페이스를 구현해야 합니다. 두 방법 사이의 차이가 없으나 자바는 다중 상속을 지원하지 않기 때문에 유연성의 관점에서 Runnable 인터페이스를 구현하여 사용하는 방법이 더 좋습니다. 예시 코드는 다음과 같습니다. public class Example { static class MyRunnableImpl implements Runnable { @Override public void run() { System.out.println(Thread.currentThread().getName() + " Start!!"); } } public static void main(String[] args) { new Thr..
이번 글에서는 쓰레드를 학습하기 전에 프로세스에 대해서 간단하게 알아보도록 하겠습니다. 프로세스 (Process) 실행 중인 프로그램을 의미합니다. 프로그램을 실행하면 OS(운영체제)로부터 실행에 필요한 자원을 할당받아 프로세스가 됩니다. 프로세스는 프로그램을 수행하는 데 필요한 데이터, 메모리 등의 자원과 쓰레드로 구성되어 있습니다. 쓰레드 (Thread) 프로세스의 자원을 이용해서 실제로 작업을 수행하는 주체입니다. 따라서 모든 프로세스에는 최소한 하나 이상의 쓰레드가 존재합니다. 하나의 쓰레드를 가진 프로세스를 싱글쓰레드 프로세스(Single-Threaded Process), 두 개 이상의 쓰레드를 가진 프로세스를 멀티쓰레드 프로세스(Multi-Threaded Process) 라고 합니다. 멀티태스..
Double Dispatch를 학습하기 전 Method Dispatch가 무엇인지 잘 모르신다면 아래 글을 참고해주세요. https://ttl-blog.tistory.com/776 [Java] Method Dispatch란? (Static, Dynamic) Method Dispatch 어떤 메소드를 호출할 것인가를 결정하고 실행하는 과정을 의미합니다. Method Dispatch의 종류에는 Static Method Dispatch와 Dynamic Method Dispatch가 있습니다. Static Method Dispatch 컴파.. ttl-blog.tistory.com Double Dispatch Dynamic Method Dispatch를 2번 한다는 의미입니다. Dynamic Method Disp..
Method Dispatch 어떤 메소드를 호출할 것인가를 결정하고 실행하는 과정을 의미합니다. Method Dispatch의 종류에는 Static Method Dispatch와 Dynamic Method Dispatch가 있습니다. Static Method Dispatch 컴파일 시점에 호출되는 메서드가 결정되는 Method Dispatch 입니다. 코드를 통해 살펴보겠습니다. public class Dispatch { static class Service { void run(int number) {//(1) System.out.println("run(" + number + ")"); } } public static void main(String[] args) { new Service().run(1);..
Deap이란? 더보기 https://ttl-blog.tistory.com/712 [자료구조] - 딥(Deap) Deap이란? 완전 이진 트리(Complete Binary Tree)이며, 비어있거나 다음을 만족시키는 자료구조입니다. 1. Root 노드는 아무런 요소를 가지고 있지 않습니다. 2. 왼쪽 서브트리는 min-heap 입니다. 3. 오른쪽 ttl-blog.tistory.com Deap 인터페이스 public interface Deap { int getLevel(int idx); boolean isMaxPosition(int idx); boolean isMinPosition(int idx); int getMaxPartnerIdx(int minIdx); int getMinPartnerIdx(int m..
Heap이란? 더보기 https://ttl-blog.tistory.com/708 [자료구조] - 힙(Heap) 힙(Heap)이란? 힙은 기본적으로 완전 이진 트리(Complete Binary Tree)이면서, 성질에 따라 최대 힙(Map Heap)과, 최소 힙(Min Heap), 두 가지 종류로 분류됩니다. 최대 힙 (Max Heap) 1. 완전 이진 트리(Complet.. ttl-blog.tistory.com Heap 인터페이스 public interface Heap { boolean isFull(); boolean isEmpty(); void levelOrder(); boolean add(E e); E remove(); } 세부 구현 기본 필드 public class MaxHeap implements..
이진 검색 트리란? 더보기 https://ttl-blog.tistory.com/706 [자료구조] - 이진 검색 트리 (Binary Search Tree - BST) 이진 검색 트리 (Binary Search Tree - BST) 이진 검색 트리는 이진트리(Binary Tree)의 한 종류이며, 비어있거나 다음 조건을 만족해야 합니다. 1. 모든 원소는 Key를 가지고 있으며, 어떠한 원소도 동일 ttl-blog.tistory.com BinarySearchTree 인터페이스 public interface BinarySearchTree{ boolean isEmpty(); boolean isFull(); int size(); boolean contains(Key key); Key get(Key key); b..
말 랑
'☕️ Java' 카테고리의 글 목록 (3 Page)