☕ JAVA/☕ Library & Pattern 35

[JAVA]Predicate 결합, Function 결합

시작 전에 Predicate와 Function가 뭔 지 모르겠다면❓2024.12.01 - [☕ 자바 JAVA/☕ 클래스와 함수 Class & Method] - [JAVA]java.util.function 패키지  and() or() negate()를 이용해두 Predicate를 결합할 수 있다. 💡 negate()는 !와 같이 not이다. true→false, false→true로 바꿔준다.  Predicate.isEqual(): 두 인수가 같은 지 확인한다.  .andThen()Function 결합Function 이라 두개의 Function을 합치려면Function출력타입>Function입력타입, 출력타입>이 두개가 같아야 한다.위 코드는 f 실행 후 g를 실행하는 함수를 합친 것이다.💡 참고로 c..

[JAVA][Thread]wait() & notify()

💡 wait() & notify() 동기화의 단점인 비효율성(한번에 한개를 처리하기에)을 보완하기 위해 사용된다.Object클래스에 정의되어 있으며, 동기화 블록 내에서만 사용할 수 있다.2024.12.09 - [☕ 자바 JAVA/☕ 클래스와 함수 Class & Method] - [JAVA][Thread]동기화 synchronizationwait()객체의 lock을 풀고, 쓰레드를 해당 객체의 waiting pool에 넣는다.notify()waiting pool에서 대기중인 쓰레드 중 하나를 깨운다.notifyAll()waiting pool에서 대기중인 모든 쓰레드를 깨운다.일반적으로는 notify()보다 notifyAll()을 사용하는 것이 좋다. 예제 내용이 어려웠는데 notify()가 대기중인 쓰..

[JAVA][Thread]동기화 synchronization

💡 쓰레드 동기화Thread synchronization한 쓰레드가 진행중인 작업을 다른 쓰레드가 간섭하지 못하게 하는 것을 말한다.멀티 쓰레드에서는 다른 쓰레드의 작업에 영향을 미칠 수 있다.진행중인 작업이 간섭 받지 않게 하려면 '동기화'가 필요하다.동기화하려면 간섭받지 않아야 하는 문장을 '임계 영역critical section'으로 설정한다.임계영역은 락Rock(자물쇠)을 얻은 단 하나의 쓰레드만 출입가능하다.(객체 1개당 락 1개) synchronized를 이용한 동기화→ 임계영역 만들기💡 임계영역은 갯수와 영역을 최소화해야 한다.때문에 메소드 전체 사용을 지양해야 한다.따라서 위의 2번째를 권장한다.  예제1spendMoney100()메서드에 synchronized를 붙여 임계영역을 만들었..

[JAVA][Thread]join() & yield()

join(): 지정된 시간동안 특정 쓰레드의 작업을 기다린다.void join()작업이 모두 끝날 때까지void join(long millis)천분의 1초 동안 (1000 = 1초)void join(long millis, in nanos)천분의 1총 + 나노초 동안InterruptedException 처리 필수❗만약 join()을 사용하지 않으면❓main쓰레드가 th1과 th2를 기다리지 않고 중간에 실행되는 것이 확인된다.  yield(): 남은 시간을 다음 쓰레드에게 양보한다.실제 쓰레드의 실행시간은 OS스케줄러가 관리하기에 크게 차이는 없지만yield()와 interrupt()를 적절히 사용하면, 응답성과 효율을 높일 수 있다.위 코드는 while(true)이고 if(false)일 경우 쓰레드는 하..

[JAVA][Thread]suspend() resume() stop(). 일시정지, 재개, 완전정지

suspend()resume()stop()메서드설명void suspend()쓰레드 일시정지.void resume()suspend()에 의해 일시정지된 쓰레드를 실행대기상태로 만든다.void stop()쓰레드 즉시 종료.❗ 이 세가지 메서드 모드 deprecated되었다. 사용을 권장하지 않는다.이유는 dead-lock 교착상태 위험이 있기 때문이다.  deprecated된 메서드들 이기에 경고문구가 뜬다.  위의 코드를 개선한 코드 참조영상

[JAVA][Thread]상태와 실행제어. sleep() & interrupt()

쓰레드의 상태상태설명NEW쓰레드가 생성되고 아직 start()가 호출되지 않은 상태.RUNNABLEstart()한 상태. 실행 중 또는 실행 가능한 상태.BLOCKED동기화 블럭에 의해서 일시정지된 상태(lock이 풀릴 때까지 기다리는 상태)WAITING, TIMED_WAITING쓰레드의 작업이 종료되지는 않았지만 실행가능하지 않은(unrunnable) 일시정지 상태.TIME_WAITING은 일시정지 시간이 지정된 경우를 의미한다.TERMINATED쓰레드의 작업이 종료된 상태.  쓰레드의 실행제어메서드설명static void sleep(long millis)static void sleep(long millis, int nanos)지정된 시간동안 쓰레드가 잠든다(일시정지).시간이 지나면 자동으로 다시 실행..

[JAVA]java.text.SimpleDateFormat:날짜와 시간을 형식화

초기화new SimpleDateFormat("패턴"); https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/text/SimpleDateFormat.html  sdf.format(날짜): 날짜와 시간을 원하는 형태로 바꾸어 String으로 반환.  parse("문자열"): 형식화된 문자열 → 날짜와 시간으로 변환.❗   parse() 를 사용할 때는 ParseException을 예외 처리가 필수이다.참조 : https://youtu.be/Ai396kKcyrQ?si=0_Ye6CCX74-HFWqD

[JAVA]java.text.DecimalFormat:숫자 형식화

java.text 패키지  DecimalFormat와 SimpleDateFormat 클래스 모두 java.text 패키지에 포함되어 있다.java.text는 다양한 텍스트(숫자, 날짜, 문자열)을 형식화, 분석, 반복 작업을 하는 클래스들이 모아진 클래스이다.  DecimalFormat class 초기화new DecimalFormat("형식");  원하는 형식을 인수로 담아 만든 인스턴스 객체를 만들어 사용한다.이 객체의 아래 메서드들을 이용해서 사용한다.  format(): 숫자를 원하는 형식으로 사용할 수 있다.  new DecimalFormat("형식 입력");DecimalFormat의 format() 메서드를 이용해 변환한다.String으로 반환된다.  parse("숫자");: 형식화된 문자열 →..

[JAVA]Calendar

※ 이전 글 : 2024.11.13 - [☕ 자바 JAVA/☕ 클래스와 함수 Class & Method] - [JAVA]날짜와 시간불러오고 간단한 사용은 이전 글을 참고해주세요!  날짜 지정set()   시간을 설정할 때는 초단위까지 모두 설정하는 걸 권장한다.  시간차 구하기getTimeInMillis()  millision천단위이기때문에 1000이 1초입니다.따라서 이렇게 /1000 으로 나누어주어야 합니다.시간과 날짜를 구할 때 위의 코드와 같이 초를 나누어 계산하는 것을 권장합니다.  add()필드값 증감(다른 필드에 영향O) add(Calendar.필드, +/-숫자)date.clear(): 1970년 1월 00:00:00시로 초기화되는 걸 볼 수 있다.date.set(2020, 7, 31): M..

[JAVA]날짜와 시간

유틸리티 종류와 권장  java.util.Date날짜와 시간을 다루는 클래스.급하게 만들어진 오래된 유틸로 문제가 많아 deprecated되었다.java.util.CanlendarDate클래스를 개선한 새로운 클래스.여전히 항상 날짜와 시간을 함께 다룬다는 단점이 존재.java.time 패키지Date와 Time을 개선한 새로운 클래스를 제공한다. JDK8부터 사용 가능.되도록 java.time 사용해야 하지만, 실무에서는 아직도 Calendar를 사용하는 경우가 많다.  불러오기  추상클래스라서 getInstance()를 통해서 객체를 만들어 사용한다.현재 날짜와 시간으로 초기화된다.서양력, 불교력, 일본력 등 다양한 시간이 있다.한국은 서양력GregorianCalendar를 사용한다.사용전에 clear..

반응형