반응형

프로그래밍 정리/자바 97

쓰레드 죽이기

- 쓰레드를 살아서 움직이게 하기 위해서 보통 run() 메서드 내에서 while문을 사용.조건이 만족하는 한 지속되고 반복된다는 특징 때문에 run() 메서드에서 while문이 자주 등장.쓰레드의 종료는 run() 메서드의 종료를 의미하기 때문에 일반적으로 while문의 종료가 곧 쓰레드의 종료가 되는 경우가 많음. - 쓰레드의 종료-> run() 메서드의 종료는 쓰레드의 종료를 의미-> 일반적으로 지속적인 작업을 하기 위해 run() 내에 while문을 포함하고 있으며, 이 while문이 끝나면 쓰레드가 종료되는 경우가 많음. - Deprecated된 Thread의 stop() 메서드-> public final void stop() Deprecated-> public final void stop(Th..

NotRunnable 상태 만들기

- 우선권은 어떤 쓰레드가 Run 상태를 더 많이 차지할 것인가의 문제. 즉 우선권이 높으면 그만큼 Run 상태에 자주 들어갈 수 있음. 쓰레드가 NotRunnable 상태가 될 수 있는 두가지 방법. - 쓰레드를 NotRunnable 상태로 만드는 방법-> sleep()을 이용해서 일정시간 동안만 대기시키는 방법(자동)-> wait()와 notify()를 이용해서 대기와 복귀를 제어하는 방법(수동) - sleep()과 wati()는 쓰레드를 NotRunnable 상태로 만듬. -> sleep()의 경우는 주어진 시간 만큼만 NotRunnable 상태로 보내며, 시간이 완료되면 자동으로 Runnable 상태로 복귀.-> wait()의 경우에는 사용자가 직접 wait()를 호출해서 NotRunnable 상..

쓰레드의 우선권

- 쓰레드의 우선권을 어떻게 주는냐에 따라서 쓰레드의 작업 순서가 달라짐. 작업 순서가 달라진다는 것을 Runnable 상탱서 얼마나 자주 Run 상태가 될 수 있느냐를 말하는 것. 우선권이 높다면 Run 상태가 될 확률이 높아짐. 우선권이 높다면 다른 쓰레들보다 빨리 끝낼 수 있음. - Thread 클래스의 static 우선권 상수.-> public static final int MIN_PRIORITY = 1;-> public static final int NORM_PRIORITY = 5;-> public static final int MAX_PRIORITY = 10; - 우선권 문제-> 어떠한 쓰레가 Run 상태를 많이 차지할 것인가의 문제.-> 쓰레드의 우선권에 대한 값은 Thread 클래스의 pu..

쓰레드의 상태

쓰레드의 상태- 시작 상태(Start 상태)- 동작할 수 있는 상태(Runnable 상태)- 동작 상태(Run 상태) - 한 순간에 단 하나의 쓰레드만이 Run 상태가 됨.- 대기 상태(NotRunnable 상태)- 종료 상태(Dead 상태) - Runnable 상태-> 쓰레가 실행되면 일반적으로 Runnable상태가 됨.-> Runnable 상태의 쓰레드는 여러 개 존재할 수 있음.-> Runnable 상태에서 CPU의 제어권을 할당받는 순간 Run 상태가 되었다가, 일정 시간동안 작업을 한 후 Runnable상태로 되돌아와서 자신의 순서가 되기를 기다림. 아무리 작업이 빠르게 이루어지더라도 한 순간에 단 하나의 작업만이 Run 상태에 있을 수 있음. 그렇기 때문에 Runnable 상태는 Run으로 들..

ObjectOutputStream와 ObjectInputStream : transient(객체직렬화)

- 스트림을 이용해서 직렬화 하는데 있어서, 커다른 프로그램 전체가 직렬화된다면, 여러가지 면에서 많은 낭비.예를 들어, 한 객체가 마우스가 눌려진 위치를 알기 위해서 마우스 클릭시에서 위치를 저장하는 필드를 가지고 있다고 가정.이 경우 마우스의 위치값은 프로그램이 돌아가는 상태에서 마우스가 눌려졌을 당시에만 유효한 값으로, 객체가 직렬화 되었다가해제 되었을 경우에는 쓸모없는 값이 되어버림.이런 객체 직렬화에 쓸모없는 값들은 transient로 선언해 줌으로써 객체 직렬화에서 제외되어질 수 있음. private transient int x; 이러한 선언은 플랫폼에 따라 다른 값을 가지는 필드나, 현재의 환경에서만 유효한 필드 등을 객체 직렬화해서 제외하는데 유용하게 쓰일 수 있음. ============..

ObjectInputStream와 ObjectOutputStream

- 객체의 데이터를 직접 제어할 수 있게 함.- 객체직렬화를 구현한 객체에 대해서만 사용 가능- 객체를 파일로 저장 ============================================================================================================ import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable; public class ObjectSerializeTest {priv..

StringReader와 StringWriter

- 메모리에 대한 문자열 데이터의 입출력을 담당 .getBuffer().reverse() -> 문자데이터 역방향======================================================================================================== import java.io.IOException;import java.io.StringReader;import java.io.StringWriter; public class StringRWTest {public static void main(String[] args) throws IOException {int ch;String str = "Hello!";StringReader sr = new StringRead..

CharArrayReader와 CharArrayWriter

- 메모리에 대한 문자 배열 데이터의 입출력을 담당 ============================================================================================================ import java.io.CharArrayReader;import java.io.CharArrayWriter;import java.io.IOException; public class CharArrayRWTest { public static void main(String[] args) throws IOException {int ch;char arr[] = {'j', 'a', 'v', 'a', 'o', 'k'};CharArrayReader car = new Cha..

PrintWriter

- 텍스트 타입의 기본 데이터 타입 및 객체의 값을 문자(2byte)로 출력 ========================================================================================================= import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter; public class PrintWriterTest {private String name = null;private String s = null;private int year = 0;public PrintWriterTest(String name, String s, int year){this.name ..

LineNumberReader

- 각 줄의 번호를 세는 추가적인 기능을 제공-> 0부터 시작하고, 1씩 증가 ======================================================================================================== import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.io.LineNumberReader; public class LineNumberReaderTest { public static void main(String[] args) throws IOException {String s = null;int ch, i = -1;..

반응형