sleep() 스레드들이 공평하게 순번을 할당받게 하는 가장 좋은 방법 가운데 하나는 주기적으로 대기 상태에 집어넣어주는 것입니다. 대기 상태에 넣어주고 싶다면 정적 메소드인 sleep() 메소드를 호출하면 됩니다. 이 때 대기 시간을 밀리초 (1 / 1000) 초 단위로 지정하기 위한 숫자를 인자로 전달해야 합니다. 아래와 같이 말이죠. 1Thread.sleep(2000); 이렇게 하면 스레드가 메소드에서 InterruptedException 이라는 확인 예외를 던질 수 있기 때문에 sleep을 호출할 때는 항상 try/catch 블록 안에서 호출해야 합니다. 따라서 아래와 같이 쓸수 있습니다. 123456789try{ Thread.sleep(2000); } catch (InterruptedExcept..
새로 생성된 스레드의 세 가지 상태 1. 새로운 스레드 1Thread t = new Thread(r); Thread 인스턴스가 만들어지긴 했지만 아직 시작되지 않았습니다. Thread 객체만 있고 아직 실행 스레드는 없는 상황입니다. 2. 실행 가능한 상태 1t.start() 스레드를 시작하면 실행 가능한 상태로(runnable state)로 들어갑니다. 즉, 실행할 준비가 되어있고 실행 대상으로 선정되기를 기다리고 있는 상태가 되는 것 입니다. 이 시점에서는 이 스레드를 위한 새로운 호출 스택이 있습니다. 3. 실행 중인 상태 1실행 대상으로 선정되었을 때 이 상태가 '현재 실행중인 스레드'가 되는 것입니다. 그런 결정은 JVM 스레드 스케줄러만이 내릴수 있습니다. 때때로 그런 결정에 영향을 끼칠 수는..
Thread 를 시작하는 방법 1. Runnable 객체 (스레드에서 할 작업)를 만든다. 1Runnable job = new MyRunnable(); Runnable 은 인터페이스 입니다. Runnable 인퍼페이스를 구현하는 클래스를 만들어야 하며 스레스에서 처리할 작업은 그 클래스에서 정의합니다. 즉, 새로운 스레드의 호룻 스택에서 실행할 메소드를 그 클래스에서 정의해야 합니다. 2. Thread 객체(일꾼)을 만들고 그 객체에 Runnable 객체(작업)를 전달한다. 1Thread thetThread = new Thread(job); 새로운 Runnable 객체를 Thread 생성자에 전달합니다. 이렇게 하면 새로운 Thread 객체에서 새로운 스택 맨 밑에 넣을 메소드(Runnable 객체의 r..
Thread 란 서버와 클라이언트 간 양방향 채팅 프로그램을 만들 때 클라이언트에서 서버로부터 메시지를 어떻게 받을 지 생각해 보죠. 가장 좋은 방법은 서버에서 메시지를 보내면 바로 메시지를 읽는 방법이겠죠? 하지만 이미 GUI 를 띄우고 나면 GUI 구성요소에서 이벤트를 내놓지 않는 이상 동시에 두 가지 일을 하긴 어렵겠죠? JAVA에서는 Thread 여러 개를 사용할 수 있지만 Thread 클래스는 하나뿐입니다. 스레드 라고 하는 경우는 별도의 실행 스레드를 의미 합니다. Thread라는 키워드는 java.lang 패키지에 들어 있는 클래스 명을 의미 합니다. 그리고 Thread 객체는 실행 스레드를 의미합니다. 따라서 새로운 실행 스레드를 만들 때는 Thread 클래스의 인스턴스를 만들어야 합니다...
Java 엑셀 파일 불러오기 이번 시간에는 Java 에서 엑셀 파일을 불러와 데이터를 가져오는 방법에 대해서 알아보겠습니다. 우선 엑셀파일을 준비하시구요 저는 이 파일을 사용하겠습니다. 우선 엑셀 파일을 불러 오기 위해서는 poi라는 라이브러리를 import 해줘야 합니다. poi란 "Microsoft Documents를 사용할 수 있게 해주는 자바 라이브러리 " 입니다. 우선 poi 라이브러리를 다운 받겠습니다. http://poi.apache.org/download.html 이 곳으로 갑니다. 그리고 빨간색 부분을 다운로드 합니다. 그런 뒤에 압출을 푸시면 아마 poi 3.15 폴더가 만들어질 것입니다. 이제 poi3.15 폴더를 프로젝트 폴더에 넣어주고 build path 에 jar 파일들을 imp..
SerialVersionUID 객체를 직렬화 하면 그 객체(그 객체와 관련된 모든 객체 포함) 에는 그 객체가 속한 클래스의 버전 ID 번호가 찍힙니다. 그 ID를 serialVersionUID 라고 부르며 그 값은 클래스 구조에 대한 정보를 바탕으로 계산 됩니다. 객체를 역직렬화 할 때 구 객체를 직렬화 한 다음게 클래스가 변경되었으면 클래스의 serialVersionUID는 다를 수 있습니다. 하지만 이런 문제를 해결할 수 있는 벙법이 있습니다. 해결방법 클래스가 바뀔 가능성이 있다고 생각이 들면 클래스에 직렬 버전 ID 집어넣으세요 Java 에서 어떤 객체를 역직렬화하려고 할 때는 직렬화된 객체의 serialVersionUID와 JVM에서 그 객체를 역직렬화하는 데 사용 한 클래스의 직렬 버전 ID..
◆Java.nio 클래스 - 자바 1.4에서 java.nio 클래스의 성능이 크게 향상되었고 프로그램이 돌아가고 있는 시스템의 소유 기능을 많이 활용합니다. 주요 기능 : 1. 버퍼를 직접 제어하는 기능입니다. 2. 더 이상 읽거나 쓸 것이 없는 경우에 입출력 코드에서 마냥 기다리지 않게 하는 넌블로킹(non-blocking) 입출력이 있습니다. - 하지만 nio 클래스는 사용 방법이 더 복잡하기 때문에 새로운 기능이 정말 필요한 것이 아니라면 io 패키지를 이용하는 것이 편합니다. 잘못쓰면 오히려 성능이 저하될 수도 있습니다. 현재 : 자바 1.7 에서 부터는 자바 io와 nio 사이의 일관성 없는 클래스 설계를 바로 잡고, 비동기 채널 등의 테느워크 지원을 대폭 강화한 NIO2.API가 추가 되었습니..
어떤 객체를 직렬화하는 것과 관련된 가장 중요한 점은 나중에 JVM을 다시 실행시킬 때, 또는 아예 다른 JVM에서실행시킬 때에도 원래의 상태로 되돌릴 수 있어야 한다는 점인데, 역질렬화는 직렬화를 뒤집어놓은 것과 비슷합니다. 123456789101112131415161718FileInputStream fileStream = new FileInputStream("MyGame.ser");//FileInputStream 을 만든다. ObjectInputStream os = new ObjectInputStream(fileStream);//ObjectInputStream 을 만든다. Object one = os.readObject();Object two = os.readObject();Object three =..
- Total
- Today
- Yesterday
- 배낭 여행
- 자전거
- 일본 배낭여행
- 방통대 과제물
- TableView
- JavaFX 테이블뷰
- 이펙티브자바
- JavaFX Table View
- windows
- effectivejava
- intelij
- 이펙티브
- 배낭여행
- 텐트
- 이펙티브 자바
- 스프링부트
- 일본 여행
- java
- git
- 자전거 여행
- effective java
- 일본 자전거 여행
- JavaFX Window Close
- 자바
- 인텔리제이
- JavaFX
- Java UI
- springboot
- JavaFX 종료
- 일본여행
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |