본문 바로가기

java

(5)
[Java] Synchronized 키워드를 알아보겠습니다. Synchronized 키워드Java 는 synchronized 키워드를 사용하여 멀티 스레드 환경에서 스레드 간 동기화와 상호 배제를 보장하기 위해 모니터 락(Monitor Lock)을 내부적으로 사용합니다. 이 락은 하나의 스레드만 임계 구역에 접근하도록 하여 데이터의 무결성을 보장합니다. 이 과정에서 JVM 은 다음 작업을 수행합니다.락을 얻기 위한 경쟁 처리락 상태 업데이트락 소유자가 해제될 때 다른 대기 중인 스레드에게 락을 전달synchronized 키워드는 다음과 같은 경우에 사용할 수 있습니다.synchronized methodstatic synchronized methodsynchronized block1. Synchronized methodSynchronized Method는 인스턴스 ..
[Java] 정렬 기준 Comparator과 Comparable 에 대해 알아보겠습니다. Comparator과 Comparable의 필요성정렬을 하기 위해서는 '기준'이 필요합니다. 기본적으로 int, double 과 같은 primitive 타입의 변수는 자연스럽게 대소 관계가 존재하기 때문에 정렬 기준을 쉽게 설정할 수 있습니다. 예를 들어, 1  하지만 객체는 정렬 기준이 자동으로 존재하지 않습니다. 예를 들어, 아래와 같은 Person 클래스를 정의했다고 가정해보았습니다.public class Person{ int age; int phoneNumber; public Person(int age, int phoneNumber){ this.age = age; this.phoneNumber = phoneNumber; }}Person p1 = ne..
[Java] 배열을 정렬해보겠습니다. 배열 정렬Java 에서 배열을 정렬하기 위해서는 Arrays.sort() 메서드를 사용합니다. 이 메서드를 통해 int 형 배열을 오름차순으로 정렬할 수 있습니다. 이때, 정렬된 배열은 새로 반환되는 것이 아니라, 원본 배열 자체가 정렬됩니다.int[] arr = new int[]{34, 100, 50, 27};Arrays.sort(arr);System.out.println(Arrays.toString(arr)); //[27, 34, 50, 100] Arrays.sort() 메서드는 내부적으로 Dual-Pivot QuickSort 알고리즘을 사용하여 배열을 정렬합니다.public static void sort(int[] a) { DualPivotQuicksort.sort(a, 0, a.len..
[Java] Queue 인터페이스 Queue 자료구조 (추후 블로깅 예정) Queue interface 사용법 Queue 선언 Queue 인터페이스는 Collection 프레임워크를 상속받으며, LinkedList, PriorityQueue 클래스 등으로 구현할 수 있다. import java.util.Queue; public interface Queue extends Collection Queue queue = new LinkedList(); Queue 메소드 목록 큐의 메소드는 두가지 형태로 되어있다. 하나는 만약 연산에 실패하게 된다면 예외를 던지고, 다른 하나는 특별한 값(null값이나 false)를 리턴한다. Queue 값 추가 queue는 FIFO 구조이기 때문에 rear(뒤)부터 값이 추가된다. public boolean a..
[Java] Object 클래스 메소드 - toString() 1. 반환되는 문자열클래스 이름과 함께 구분자로 '@'가 사용되며, 뒤로 인스턴스의 주소를 가리키는 값인 16진수 해시코드가 추가된다.getClass().getName + '@' + Integer.toHexString(hashCode())package S1U8;public class ObjectMethod { public static void main(String[] args) { ObjectClass objectClass1 = new ObjectClass(1,"object1"); ObjectClass objectClass2 = new ObjectClass(2,"object2"); System.out.println(objectClass1.toString()); ..