Java 썸네일형 리스트형 JAVA에서의 동기화 기법(모니터 etc) JAVA에서 모든 객체는 내부적으로 모니터를 가진다. 1. 모니터의 mutual exclusion 기능은 synchrnozied 키워드로 사용한다. 2. JAVA의 모니터는 condirtion variable을 하나만 가진다. ( 두 개 이상의 cv를 원한다면 따로 구현이 필요) 3. JAVA 모니터의 세 가지 동작(Operation) a) wait b) notify(=signal) c) notifyAll(=broadcast) bounded producer/consumer problem WITH JAVA java.util.concurrent에는 동기화 기능이 탑재된 여러 클래스들이 있으니 참고하자. 더보기 Stack Frame( in Java ) with THIS pointer 함수/메서드가 호출이 될때마다 메모리의 stack 영역에는 각 함수의 중간값들을 저장하기 위하여 stack frame이 생성이 된 다. 그리고 해당 함수/메서드가 종료가 되면 Frame Pointer를 사용하여 이전 함수/메서드로 실행의 흐름이 바뀐다. JAVA, C++에서는 메서드가 호출이 될 때, 생성자가 호출이 될때, THIS 포인터가 Stack Frame에 할당이 된다는 사실을 오늘 처음 알았기에 , 블로 그에 정리를 해 본다. 1. 생성자 호출 new Counter() 생성자도 메서드이기에 stack frame이 할당이 되고, this 레퍼런스가 만들어 지고 그 레퍼런스는 객체의 주 소를 가리키게 된다. 생성자의 실행이 종료되면, main 메서드의 stack frame의 c 레퍼런스에 this .. 더보기 StringBuilder의 사용 이유와 System.out.print()의 실행 속도 백준 1655문제를 JAVA로 풀다가 계속해서 시간초과가 떠서 심히 빡이 쳤다. 내가 짠 C++ 코드를 그대로 JAVA로 Porting을 했음에도 시간초과가 떴다. 결국 원인은 System.out.print(max_heap.peek())에 있었다. 소스 코드(시간초과) BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); PriorityQueue max_heap = new PriorityQueue(Collections.reverseOrder()); PriorityQueue min_heap = new PriorityQueue(); int n = Integer.parseInt(br.readLine());; for( int x = .. 더보기 자바에서의 Priority_Queue 우선 C++에서의 Priority Queue는 default가 최대힙으로 구현이 된다. 알고리즘 문제를 자바로 풀면서, 당연히 자바도 default가 최대힙인 줄 알았으나 , 자바에서는 defualt가 최소힙이였다. ( 일반적으로, Heap이라고 함은 최대Heap을 말한다.) C++ priority_queue max_heap; // less는 default이므로 생략이 가능. priority_queue min_heap; // 최소힙 구현 시, greater를 넣어 줌 . JAVA PriorityQueue max_heap = new PriorityQueue(Collections.reverseOrder()); PriorityQueue min_heap = new PriorityQueue(); JAVA의 Pri.. 더보기 이전 1 다음