
이전에 포스팅한 join() 메서드에서도 언급했듯, Thread는 Main 메서드의 순서와는 별개로 실행된다는 것이 장점이자 단점이다. 즉, 실행 속도에 따라 원치 않는 결과를 얻을 수도 있는 것이다. 간단한 예시로 한 은행 계좌에 두 명의 사람이 각각 입금과 출금을 한다고 가정하고 코드를 짜 보자. ○Bank.java package com.choonham; public class Bank { private int money = 10000; //현재 잔액 초기 값 public Bank() { // TODO Auto-generated constructor stub } /* 입금 처리 메서드 */ public void MoneyIn(int save) { int m = this.money; try { Thre..

또, 예시가 1개뿐인 문제를 만났다. 상당히 복잡해 보이는 문제지만, 대기 시간이 0인 작업을 먼저 처리해주고 그다음에 작업 시간이 짧은 작업 순으로 처리하여 평균 시간을 구하면 풀릴 줄 알았다... package com.choonham; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.PriorityQueue; class Solution { public int solution(int[][] jobs) { int disk = 0; int sum = 0; int answer = 0; List tempArray = new ArrayList(); PriorityQueue pq = new..
스레드는 기본적으로 메인과 따로 작동을 하기 때문에 Main 안에 어떤 순서로 스레드를 놓아도 따로따로 실행이 된다. 그러나 특정 데이터 값의 연산이나 특정 작업을 각 스레드가 모두 종료된 뒤에 실행되게끔 만드려면, 각각의 스레드가 모두 종료될 때까지 대기하다 Main을 끝마쳐야 한다. 이럴 때 사용하는 메서드가 바로 join() 메서드이다. ARS로 모금을 진행하는 간단한 예제로 이해해보자. ○Account: package com.choonham; public class Account { //모금함 private int total = 0; public Account() { } public void deposit() { this.total = this.total + 1000; } public int ge..

각 스레드 객체를 생성한 뒤 어느 스레드를 우선으로 실행할 지 지정해줄 수 있다. 그러나, 예시에서 사용할 코드는 각각 스레드의 작업량이 그렇게 많지 않아서 뚜렷한 우선순위 차이를 보기는 힘들다. 그냥 priority 를 이렇게 지정하는구나...라고 생각하면 될 거 같다. ○PriorityThread: package com.choonham; public class PriorityThread extends Thread { public PriorityThread() { // TODO Auto-generated constructor stub } public void run() { int i = 0; System.out.println(this.getName() + "[우선권:" + this.getPriority..
주먹구구식으로 Spigot 플러그인을 제작할 때, 항상 Runnable 인터페이스를 잘 사용을 못해서, HashMap으로 스킬 쿨타임 들을 구현했던 기억이 난다. (뭐, 지금 생각해도 Map이 더 효율적인 방법이긴 하지만...ㅎ) 아무리 여러 블로그에 있는 포스팅들을 읽어봐도 Multi Threads 로 제 각각의 타이머를 만드는 개념이 이해가 잘 안 됐었다. 그래서 다루는 김에 간단히 1분을 세는 타이머를 구현한 방법을 적어볼까 한다. ○RunnableTest: package com.choonham; public class RunnableTest implements Runnable { int count = 0; int num = 0; boolean timeOut = false; public Runnab..

오늘은 Heap의 LV3 문제를 하나 푸려고 프로그래머스에 접속을 했는데, 평소에는 보이지도 않던 실력 체크라는 탭이 눈에 들어왔다. ㅎㅎ... 코테 문제를 풀기 시작한 지 이제 2주 정도 접어들었는데, 내 실력은 어느 수준일까? 한번 확인해보고 싶기도 하고, 괜한 호기심이 생겨서 가볍게 LV1부터 풀어보기로 했다. 1번 문제: 복잡해 보이지만, 사실 들어오는 입력 배열에서 중복 값을 제거한 포켓몬 종류의 수가 (입력 배열 / 2)의 값보다 큰 지 비교하여 출력 값을 결정해주면 되는, 짜는데 3분도 안 걸리는 아주 간단한 문제이다. 나는 HashSet을 이용하여 중복 값을 전부 제거한 뒤, 비교하는 과정을 진행했다. package com.choonham; import java.util.HashSet; c..

Multi Thread를 구현하기 위한 run() 메소드는 Runnable 인터페이스가 가지고 있으며, 이 Runnable 인터페이스를 구현받은 Thread 클래스를 이용하여 구현할 수도 있다. 즉, 간단하게 구조를 보면.. run() 메서드: public interface Runnable{ public void run(); } Thread 클래스: public class Thread implements Runnable{ public Thread(){ } @Override public void run() { } } 위와 같이 구성되어 있으므로 Thread 클래스를 상속 받거나, Runnable 인터페이스를 구현 받는 방식으로 run() 메서드를 구현할 수 있다는 것이다. ThreadClass를 상속 받는..

그 동안 여러 코딩 테스트, 알고리즘 문제를 풀면서 다양한 자료 구조를 사용하긴 했지만, 따로 정리한 내용이 부족한 것 같기도 하고, 오늘 강의에서 Java의 Collection 에 있는 자료 구조를 전부 설명해 주시길래 정리해보려고 한다. 1. ArrayList: 워낙 기본적인 내용이기도 하고 많이 사용해서...자세한 내용은 Pass. package com.choonham.list; import java.util.ArrayList; import java.util.Iterator; public class ArrayListTestClass { public ArrayListTestClass() { // TODO Auto-generated constructor stub } public static void a..
DB와 프로젝트를 연동하기 위해서는 드라이버나 사용자 정보를 가지고 있는 properties 파일이 필요하다. 기본적으로 properties 파일은 연동 작업을 할 클래스와 같은 위치에 생성하는데, 같은 위치에 있는 properties 파일을 절대 경로로 읽게끔 코드를 작성하면 그 코드는 클라이언트 측에서 사용할 수 없기 때문에 반드시 상대 경로로 읽어와야 한다. 우선, properties 파일의 예제는 다음과 같다. 더보기 driver = oracle.jdbc.OracleDriver url = jdbc.oracle:thin@localhost:1521:orcl username = scott password = tiger 그리고, 데이터베이스를 연동하는 작업을 하는 클래스는 다음과 같이 정의하여 상대 경로..

계산식: 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) 개인적으로 이렇게 테스트 케이스를 하나만 주는 경우를 굉장히 싫어한다. 테스트 케이스'만' 성공했을 때 그 반례를 찾기가 너무 시간이 오래걸려서 잘못하면 진짜 몇시간씩 진전도 없이 날리는 경우가 생기기 때문에.... 이 문제는 어제 포스팅에서 정리한 Heap이나 Priority Queue만 잘 활용하면 별 문제 없이 해결할 수 있는 문제이다. 우선 받은 스코빌 지수 배열을 모두 Priority Queue에 저장하여 insert와 동시에 스코빌 지수가 낮은 순으로 자동 정렬될 수 있게 만들어 주고, 스코빌 지수가 낮은 두 음식을 섞을 함수를 따로 만들어 저장해주면 끝! 사실 자료..
- await
- 이탈리안 레스토랑
- react-native
- redux
- Promise
- 인천 구월동 맛집
- javascript
- 인천 구월동 이탈리안 맛집
- 파니노구스토
- 맛집
- react
- AsyncStorage
- 정보보안기사 #실기 #정리
- Async
- redux-thunk
- Total
- Today
- Yesterday