728x90 반응형 SMALL JAVA공부32 쓰레드 제어문(1) Sleep() -현재 쓰레드를 지정된 시간동안 멈추게 한다. static void sleep(long millis); static void sleep(long millis, int nanos); -static 메서드인 특성상 자기 자신만 제어할 수있다. 다른 쓰레드를 제어할 순없다. 매개변수 내에 잠잘 시간을 정해준다. 밀리세컨드(3초 = 3000밀리세컨드)와 나노세컨드의 시간단위로 세밀하게 값을 지정할 수 있지만 어느정도 오차가 발생할 수 있다. try{ Thread.sleep(1, 500000); }catch(InterruptedException e){} sleep()메서드는 예외를 발생시킬수 있으므로 예외문과 함께 다닌다. Exception 클래스의 자손인 InterruptedException이기 .. 2021. 10. 13. 데몬 쓰레드와 쓰레드의 상태(실행제어) 데몬쓰레드란? 데몬쓰레드 : 일반 쓰레드의 작업을 돕는 보조적인 역할을 수행한다. 일반쓰레드가 종료되면 데몬 쓰레드는 강제적으로 자동 종료된다. 즉 데몬쓰레드가 아닌 쓰레드가 종료되면 데몬쓰레드는 모두 종료된다. 어떤 쓰레드가 대표적으로 사용되는가? 가비지 컬렉터, 자동저장, 화면, 자동갱신 등 쓰지않는 메모리를 제거하거나, 워드에서 자동저장(시간이 셋팅되어있으면), 화면 자동갱신(자동 새로고침 등) 그럼 데몬쓰레드는 어떻게 작성하는가? public void run(){ while(true) try{ Thrad.sleep(3*1000); //3초마다 }catch(InterruptedException e) {} //autoSave값이 true면 autoSave()를 호출한다. if(autoSave){ au.. 2021. 10. 12. 쓰레드의 우선순위, 그룹 쓰레드의 우선순위 쓰레드는 우선순위라는 속성을 가지고 있다.(멤버변수) 이 우선순위 값에 따라 쓰레드가 얻는 실행시간이 달라진다. 쓰레드가 수행하는 작업의 중요도에 따라 쓰레드의 우선순위를 서로 다르게 지정하여 쓰레드가 더 많은 작업시간을 갖도록 할 수있다. -즉 더 중요한 쓰레드에게 우선순위를 높게 주어서 더 많은 작업시간을 가지게 할 수 있다는 것 자바에서 쓰레드의 우선순위를 1~10까지 보유할 수있다. 기본적으로 보통우선순위는 5, 최소 우선순위는1, 최대 우선순위는 10이다. 우리가 생성하고, 아무것도 지정하지않으면 5, 기본값을 얻게된다. void setPriority(int newPriority) // 쓰레드의 우선순위를 지정한 값으로 변경 int getPriority() //쓰레드의 우선순위.. 2021. 10. 12. 싱글쓰레드와 멀티쓰레드 main쓰레드 main 메서드 의 코드를 수행하는 쓰레드 예를들어 우리가 main메서드를 실행하면 위가 바로 메인쓰레듣가 쓰레드는 사용자쓰레드와 데몬쓰레드, 두 종류가 있다. 데몬쓰레드 : 간단히 얘기해서 사용자 쓰레드의 보조 역할, 더보기 실행 중인 사용자 쓰레드가 하나도 없을 때 프로그램은 종료된다. 메인쓰레드가 종료되면 전체 프로그램이 종료되었지만, 멀티쓰레드 프로그램에서 아직 실행중인 쓰레드가 있다면 프로그램은 종료되지 않는다. 싱글쓰레드와 멀티쓰레드 프로스세의 차이를 보다 깊이 알아보자 하나의 쓰레드로 두개의 작업을 수행을 시켜보자, AAAAABBBBB 한개의 쓰레드가 끝나고 두번째 쓰레드가 시작된다. 그런데 또다른 프로그램은 두개의 쓰레드로 두개의 작업 수행시키면 ABABABABAB 번갈아 가.. 2021. 10. 8. 쓰레드의 구현과 실행 Tread클래스를 상속 이것은 하나만 상속받을 수 있는 자바언어 특성상 쓰레드를 상속받자니 조금 아쉽다. class MyThread extends Thread{ public void run(){ //쓰레드클래스의 run() 을 오버라이딩 } } Rubbable 인터페이스 상속(이게좀더 좋다) 인터페이스를 상속받으니 다른 클래스를 상속을 받을 수 있기에 class MyThread2 implements Runnable{ public void run(){ //Runnable 인터페이스의 추상메서드 run()을 구현 } } 두 상속된 것을 보면 (인터페이스와 클래스) 둘다 run()매서드를 가지고있다. 그래서 클래스를 쓰냐 인터페이스를 쓰냐 고민할 게없다. 둘다 같은 기능을 한다.! 문서에서도 쓰레드 클래스에 .. 2021. 10. 7. 프로세스와 쓰레드 프로세스와 쓰레드(process & thread) 프로세스 : 실행 중인 프로그램, 자원(메모리, 씨피유)과 쓰레드로 구성-프로그램을 실행하면 OS로 부터 실행에 필요한 자원(메모리)를 할당 받아 프로세스가 된다. 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 바로 쓰레드 쓰레드 : 프로스세스 내에서 실제 작업을 수행 더보기 모든 프로세스는 최소한 하나의 쓰레드를 가지고 있다, 프로세스 : 쓰레드 = 공장 : 일꾼 그럼 싱글 쓰레드 프로세스(일꾼 한명!) = 자원 + 쓰레드 멀티 쓰레드 프로세스(일꾼 여러명!) = 자원+쓰레드+쓰레드 ... + 쓰레드 멀티쓰레드로 프로그램을 작성하면 여러작업을 나누어서 동시에 수행할 수 있고 보다 작업을 효율적으로 할 수있고, 우리프로그램은 대부분 멀티 쓰레드로.. 2021. 10. 7. 애너테이션 타입 정의하기 지금까지 애너테이션 사용하는 방법에 대해 공부함. 이제 만들어서 사용해 볼것이다. 새로운 애너테이션을 정의하는 방법은 다음과 같다. @기호를 붙이는 것을 제외하는 인터페이스를 정의하는 것가 동일하다. @interface 애너테이션이름{ 타입 요소이름(); } @interface DateTime{ String yymmdd(); String hhmmss(); } 위는 2개의 요소가 있고, 타입은 스트링, 날짜와 시간을 의미하는것으로 보여줄수 있다. 추상 메서드로 되어있다. 애너테이션의 메서드는 추상 메서드이며, 애너테이션을 적용할 때 지정(순서는 상관없다.) @interface TestInfo{ int cnt(); String name(); Stirng[] mambers(); TestType testType.. 2021. 10. 6. 메타 애너테이션 메타 에너테이션은 애너테이션을 위한 애너테이션이다. 즉, 애너테이션을 만들때 만드는 애너테이션, 애너테이션에 붙이는 애너테이션으로 애너테이션을 정의할 때 애너테이션의 적용대상이나 유지기간 등을 지정하는데 사용된다. Java.lang.annotation패키지에 포함되어있다. 애너테이션 설명 @Target 애너테이션이 적용가능한 대상을 지정하는데 사용한다. @Documented 애너테이션 정보가 javadoc로 작성된 문서에 포함되게 한다. @Inherited 애너테이션이 자손 클래스에 상속되도록 한다. @Retention 애너테이션이 유지되는 범위를 지정하는데 사용한다. @Repeatable 애너테이션을 반복해서 적용할 수 있게 한다.(JDK1.8) @Target 애너테이션 애너테이션을 정의할 때, 적용대.. 2021. 10. 6. 이전 1 2 3 다음 728x90 반응형 LIST