MapleStory Cookie With Halo

☕ JAVA 114

[JAVA][stream]스트림이란? (+특징)

Stream🌊: 다양한 데이터 소스(Collection, array)를표준화된 방법으로 다루기 위한 패키지. 스트림만들기중간연산 - 연산결과가 스트림⭕. n번 수행가능.최종연산 - 연산결과가 스트림❌. 1번만 수행가능.   💡 Collections패키지로 컬렉션 객체들(List, Set, Map)을 다룰 수 있지만2024.11.27 - [☕ 자바 JAVA/☕ 클래스와 함수 Class & Method] - [JAVA]Collections:컬렉션을 위한 메서드 모음컬렉션 객체의 성격이 많이 달라 사용법이 일치되지 않았었습니다.JDK1.8부터 Stream이 들어오면서 배열과 컬렉션을 가지고 스트림을 만들어 사용법을 통일하였습니다.  특징   💡 최종연산에서 Stream을 소모한다.따라서 재사용 시 스트림..

[JAVA]메서드 참조 method reference

함수형 인터페이스란❓2024.12.11 - [💬 프로그래밍 표현식] - [Lambda]함수형 인터페이스 FunctionalInterface람다식이란❓2024.12.11 - [💬 프로그래밍 표현식] - [Lambda]람다식  메서드 참조method reference클래스이름::메서드이름   람다식의 구현부 Integer.parseInt(s);에서클래스이름 Integer메서드이름 parseInt만 빼서 적은 것이다.함수형인터페이스 Function에 입출력정보가 있기에 가능하다.💡 메서드 참조는 하나의 메서드만 호출하는 람다식을 간단히 사용할 수 있게 해준다. 종류람다메서드 참조static메서드 참조(x) -> ClassName.method(x)ClassName::method인서턴스 메서드 참조(obj,..

[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][Thread]Daemon Thread 데몬 쓰레드

데몬 쓰레드: 일반 쓰레드의 작업을 돕는 보조적인 역할을 수행한다.→ 따라서 일반 쓰레드가 종료되면 자동 종료된다.가비지 컬렉터, 자동저장, 화면 자동갱신 등에 사용된다.무한루프와 조건문을 이용해서 싱행 후 대기하다가, 특정조건if()이 만족되면 작업을 수행하고 다시 대기한다. 데몬 쓰레드 만들기thread.setDaemon(true); DaemonThread_Ex1 클래스는 Runnable 인터페이스를 상속 받은 쓰레드이다.new Thread안에 이 클래스를 넣고 쓰레드를 만들었다.setDaemone(True)로 데몬쓰레드로 만들었다.start()하면 아래 run()이 실행된다.for문에서는 1초마다 i를 출력하고 잇는데i == 5가 되면 autuSave가 true가 되어 run() 안의 autoSav..

[JAVA][Thread]우선순위

💡쓰레드의 우선순위 Priority of thread프로세스 내  쓰레드들의 작업 중요도에 따라 우선순위를 다르게 한다.→ 특정 쓰레드가 더 많은 작업시간을 갖게 한다.이 우선순위를 전달하면 OS스케쥴러는 참고만 한다.→ 우선순위대로 잘 되지 않는다.   우선순위를 정해보자.getPriority() : 우선순위를 반환한다.💡 쓰레드의 우선순위는 10까지 있다.기본 우선순위는 5이다.숫자가 높을 수록 우선순위가 높다.   쓰레드 그룹: 서로 관련된 쓰레드를 그룹으로 묶는다.모든 쓰레드는 반드시 하나의 쓰레드 그룹에 포함되어 있어야 한다.쓰레드 그룹을 지정하지 않으면 'main쓰레드 그룹'에 속한다.자신을 생성한 쓰레드(부모 쓰레드)의 그룹과 우선순위를 상속받는다.getThreadGroup() : 쓰레드..

반응형