728x90 Gayoung162 item 80. 스레드보다는 실행자, 테스크, 스트림을 애용하라 java.util.concurrent 패키지의 등장 : 실행자 프레임워크라고 하는 인터페이스 기반의 유연한 테스크 실행 기능 포함. -> 뛰어난 작업 큐를 생성할 수 있게 되었다. // 작업 큐 생성 ExecutorService exec = Executors.newSingleThreadExecutor(); // 실행자에 실행할 테스크를 넘기는 방법 exec.execute(runnable); //실행자를 종료시키는 방법 exec.shutdown(); 실행자 서비스의 주요 기능들 get 특정 테스크가 완료되기를 기다림 invokeAny / invokeAll 테스크 모음 중 아무거나 하나 or 모든 테스크가 완료되기를 기다림 awaitTermination 실행자 서비스가 종료하기를 기다림 ExecutorCom.. 2022. 8. 31. item 79. 과도한 동기화는 피하라 * 동기화란? 여러개의 thread가 하나의 리소스를 사용하려고 할 때 ,사용하려는 thread를 제외한 나머지 thread들이 리소스에 접근하지 못하게 막는것 * 동기화 방법 메소드 자체를 synchronized로 선언 블록으로 객체를 받아 lock을 거는 방법 - syncrhonized(this) * 과도한 동기화의 문제점 : 성능을 떨어트리고, 교착상태에 빠뜨리며, 데이터를 훼손하고, 예측할 수 없는 동작을 낳는다. 응답 불가와 안전 실패를 피하려면 동기화 메서드나 동기화 블록 안에서는 제어를 절대로 클라이언트에 양도하지 말아라! 제어 ex) 동기화된 영역 안에서 재정의할 수 있는 메서드 호출, 클라이언트가 넘겨준 객체 호출 ----> 동기화된 영역을 포함한 클래스 관점에서, 클라이언트가 넘겨준 메.. 2022. 8. 31. [Java] 11062 - 카드 게임 https://www.acmicpc.net/problem/11062 11062번: 카드 게임 근우와 명우는 재미있는 카드 게임을 하고 있다. N개의 카드가 일렬로 놓여 있다. 각 카드에는 점수가 적혀있다. 근우부터 시작하여 번갈아가면서 턴이 진행되는데 한 턴에는 가장 왼쪽에 있는 www.acmicpc.net 간만에 알고리즘에 대한 포스팅을 합니다. 이분 탐색을 하는것 처럼 left와 right의 범위를 줄여나가며 근우를 기준으로 최선의 선택을 하는 과정을 DP에 저장합니다. 가장 중요한 부분은 아무래도 이 부분이 아닐까 싶습니다. 1 2 3 4 5 6 7 8 if(flag){ // 근우 차례일 때 명우 카드에 뭘 더해야 최대값인지를 정해야 됨. return DP[left][right] = Math.max.. 2022. 8. 30. [객체 지향 프로그래밍과 SOLID 원칙] 2022. 8. 5. 공지 앞으로 Effective Java는 개인 notion에 업로드 할 예정입니당~! 나중에 하나씩 다시 올릴 수도 있고... 어짜피 내 티스토리 아무도 안보니까...ㅎㅎㅎㅎㅎㅎ 2022. 7. 30. [JPA] 연관 관계 @Entity : 데이터베이스의 테이블과 1:1로 매칭되는 객체 단위 위 annotation이 붙은 class는 JPA가 관리한다. Entity 객체의 인스턴스 하나가 테이블에서 하나의 레코드 값을 의미한다. 따라서 객체의 인스턴스를 구번하기 위한 유일한 키 값을 가진다. 이는 테이블의 PK와 같은 의미를 하며 @ID annotation을 사용해 표기한다. 주의 사항 * 명시적으로 @Table의 name속성을 이용해 실제 테이블 명칭을 지정하지 않을 시 EntityClass 이름 그대로 CamelCase를 유지한 채 테이블이 생성된다. 따라서 테이블 이름을 명시적으로 작성하는 것이 관례이다. * 기본 생성자는 필수 *enum, Interface, final/inner 클래스에는 사용할 수 없다. @Ent.. 2022. 7. 14. 이전 1 2 3 4 5 6 ··· 27 다음 728x90