MapleStory Cookie With Halo

전체 글 470

[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() : 쓰레드..

[JAVA][Thread]main쓰레드, join(), I/O Blocking

main쓰레드: main메서드의 코드를 수행하는 쓰레드.쓰레드에는 두가지 종류가 있다.사용자 쓰레드→ main쓰레드가 여기 속한다.데몬 쓰레드 (보조 쓰레드)❗ 실행 중인 사용자 쓰레드가 하나도 없을 때 프로그램은 종료된다.  join(): 쓰레드 작업이 끝날 때까지 기다려준다.  main쓰레드가 끝나도실행중인 쓰레드가 끝나야 프로그램이 종료된다. 💡싱글 쓰레드와의 차이 💡Context Switching멀티 쓰레드에서 작업을 번갈아가면서 진행할 때A작업 → B작업, B작업 → A작업으로 오고갈 때를 말한다.이 때문에 싱글 쓰레드보다 멀티 쓰레드는 작업에 시간이 조금 더 걸린다.  쓰레드의 I/O blocking: 쓰레드 입출력시 작업중단.  싱글 쓰레드 중에는 I/O Blocking이 발생하면 작업이..

[JAVA][Thread]Multi Thread

Process & Thread  Process실행중인 프로그램을 말한다.자원resources(memory, CPU..)과 Thread로 구성되어있다.Thread프로센스 내에서 실제 작업을 수행한다.모든 process는 최소한 하나의 thread를 가지고 있다.프로세스의 일꾼 같은 역할.  하나의 새로운 프로세스를 생성하는 것보다 하나의 새로운 쓰레드를 생성하는 것이 더 적은 비용이 든다. 💡 스레드가 하나일 때 Single Thread Process, 여러 개일 때는 Multi Thread Process라고 한다.우리가 사용하는 프로그램들 대부분은 멀티 스레드이다.  장점시스템 자원을 효율적으로 사용.응답성이 향상된다.→ 한꺼번에 여러프로그램에서 응답받기 가능.작업이 분리되어 코드가 간결해진다.단점보통..

[JAVA]java.util.function 패키지

시작 전 이 포스트에 나오는 람다식과 함수형 인터페이스가 무엇인 지 모르겠다면❓2024.12.11 - [💬 프로그래밍 표현식] - [Lambda]람다식2024.12.11 - [💬 프로그래밍 표현식] - [Lambda]함수형 인터페이스 FunctionalInterface  java.util.function: 자주 사용되는 다양한 함수형 인터페이스 모음.함수형 인터페이스메서드설명 java.lang.Runnablevoid run()매개변수❌ 반환 ❌SupplierT get()매개변수❌ 반환⭕Consumervoid accept(T t)매개변수⭕ 반환 ❌FunctionR apply(T t)매개변수⭕ 반환 ⭕ .일반적인 함수.Predicateboolean test(T t)매개변수⭕ boolean반환 ⭕   Bi..

[JAVA]@Annotation 만들기

@Annotation이란?2024.11.29 - [☕ 자바 JAVA/☕ 개념지식] - [JAVA]@Annotation 종류와 사용법  정의하기@interface 어노테이션명 {타입 요소이름();} 어노테이션 메서드는 ()는 있지만 매개변수가 없는 추상 메서드이다.→ 어노테이션을 클래스에 사용할 때 요소의 값을 지정한다.요소에 순서는 없다.어노테이션 이름은 유일해야 한다.(중복시 java.lang.NoSuchMethodError 발생)※ Annotation 요소 규칙○ 요소 타입은 기본형, String, enum, annotation, Class만 허용된다.○ 괄호() 안에 매개변수를 선언할 수 없다.○ Exception 선언 불가.○ 타입 매개변수 정의 불가능.  default 지정 가능→ 값을 지정하..

[JAVA]@Annotation 종류와 사용법

Annotation@: 주석처럼 프로그래밍 언어에 영향을 미치지 않으며, 유용한 정보 제공.  이전에는 코드에 대한 설명을 따로 문서파일로 만들었었다. 코드를 변경할 때마다 문서는 수정하지 않으면서 내용의 불일치가 생겼다. 그래서 문서에 적던 내용을 코드에 적기 시작한 게 바로 어노테이션이다. 표준 어노테이션설명@Override 컴파일러에게 오버라이딩하는 메서드라는 것을 알린다.@Deprecated앞으로 사용하지 않을 것을 권장하는 대상에 붙인다.@SuppressWarnings컴파일러의 특정 경고메시지가 나타나지 않게 해준다.(JDK1.7)@FunctionalInterface함수형 인터페이스라는 것을 알린다.(JDK1.8)@Nativenative메서드에서 참조되는 상수 앞에 붙인다.(JDK1.8) 표준 ..

반응형