전체 글

안녕하세요
데드락 2개의 쓰레드가 서로 기다리는 상태 이것을 방지하기 위해서 synchronized 메소드에서 다른 synchronized메소드를 부르면 안된다. Wait() / notify() - wait(멈춰!) Wait() : 리소스가 더 이상 유효하지 않은 경우 리소스가 사용 가능할 때 까지 위해 Thread를 non-runnable 상태로 전환한다. Wait() 상태가 된 thread 는 notify() 호출할때 까지 기다린다. Notify() : wait() 하고 있는 thread 중 아무거나 한 thread를 runnable 한 상태로 깨운다. - 불공평 notifyAll() : wait() 하고 있는 모든 thread 가 runnable 한 상태가 되도록 한다. Notify()보다 notifyAll(..
데드락 2개의 쓰레드가 서로 기다리는 상태 이것을 방지하기 위해서 synchronized 메소드에서 다른 synchronized메소드를 부르면 안된다. Wait() / notify() - wait(멈춰!) Wait() : 리소스가 더 이상 유효하지 않은 경우 리소스가 사용 가능할 때 까지 위해 Thread를 non-runnable 상태로 전환한다. Wait() 상태가 된 thread 는 notify() 호출할때 까지 기다린다. Notify() : wait() 하고 있는 thread 중 아무거나 한 thread를 runnable 한 상태로 깨운다. - 불공평 notifyAll() : wait() 하고 있는 모든 thread 가 runnable 한 상태가 되도록 한다. Notify()보다 notifyAll(..
Multi Thread 구현하기 임계영역(critical section) 이란 ? 두개 이상의 thread가 동시에 접근하게 되는 리소스이다. Critical section 에 도싱에 thread가 접근하게 되면 실행 결과를 보장할수없다. thread간의 순서를 맞추는 동기화 (synchronization)이 필요하다. 동기화(synchronization) 임계영역에 여러 thread 가 접근하는 경우 한 thread가 수행하는 동안 공유자원을 lock 하려 다른 thread의 접근을 막는다. 동기화를 잘못 구현하면 deadlock에 빠질수 있다. 자바에서 공유자원이 되는건 static 키워드를 가진 객체인데 멤버 변수들은 static 은 공유를 하게된다 static 키워드 를 가진 객체를 공유하면 문제..
Interrupt() 메소드 (다시 runnable 상태가 된다.) 다른 thread에 예외를 발생시키는 interrupt 를 보낸다. Thread가 join() , sleep() , wait() 메소드에 의해 블록킹 되었다면 Interrupt에 의해 다시 runnable 상태가 될수 있다. Thread 종료하기 데몬등 무한 반복하는 thread가 종료될수 있도록 run() 메소드 내의 while문을 활용 Thread.stop()은 사용하지 않는다. 쓰레드가 run해서 찍는걸 했지만 서비스를 돌면 무한반복으로 돈다 계속 돌게 되는데 while문안에 flag를 써서 true냐 false냐로 package thread; public class InterruptTest extends Thread { publi..
Thread의 여러가지 메소드 활용 Runnable 한 상태가 되야지 CPU를 점유할수있다. 스케쥴러가 CPU를 배분해주게된다. 스레드가 돌다가 Dead 끝이나면 Sleep(시간) , wait() , 1000을 넣으면 천분의 1초로 Runnable 상태로 빠진다. NotRunnable 상태가 되야 CPU를 점유할수없다. Wait 은 동기화할 때 얘기할 것 스레들리소스를 기다릴떄 쓰인다. Join 두개의 스레드가 동시에 돌아가면 한스레드가 다른 스레드에게 join 을 걸면 다른스레드가 끝날떄까지 join건 스레드가 Not Runnable 상태로 빠진다. 다시 돌아오게 하려면 Sleep(시간) -> 시간이 지나면 돌아온다. wait() 에서 notify() 를 걸면 돌아오게 된다. Join() 에서 othe..
프로그램이 메모리상태에 올라간 상태가 프로세스 실행되는 단위가 스레드 즉 하나의 프로세스는 하나 이상의 스레드를 가지게 된다. 두개가 동시에 돌아가는 것처럼 보인다. 스레드는 CPU를 점유해서 돌아가게 되는데 CPU를 점유할 수 있는 스케쥴러가 있다. 스케쥴러가 스레드의 CPU를 할당해서 스레드를 수행하도록해줌 package thread; class MyThread extends Thread { @Override public void run() { int i; for(i = 0; i < 200; i++) { System.out.print(i + "\t"); } try { sleep(1000); // 깨어나게 한다. 이터럽트 이셉션을 발생 } catch (InterruptedException e) { Sy..
바이트 단위 스트림 InputStream : 바이트 단위 입력 스트림 최상위 클래스 OutputStream : 바이트 단위 출력 스트림 최상위 클래스 추상메소드를 포함한 추상 클래스로 하위 클래스가 구현하여 사용 주요 하위 클래스는 FileInputStream 과 FileOutputStream 사용하기 파일에 (한 바이트씩) 자료를 읽고 쓰는데 사용 입력 스트림은 파일이 없는 경우 예외발생 출력 스트림은 파일이 없는 경우 (파일 생성)하여 출력한다. 한글은 FileWriter , FileReader 를 쓴다. FileInputStream 파일에 바이트 단위로 읽는다. package inputstream; import java.io.FileInputStream; import java.io.FileNotFo..
io 입출력에 있는 Console 클래스는 이클립스와 연동이 안되서 cmd 콘솔 화면에서 해야한다. package streamInputstream; import java.io.Console; // 이클립스와 연동이 안되서 cmd 콘솔 화면에서 해야한다. public class ConsoleTest { public static void main(String[] args) { Console console = System.console(); // 콘솔을 가져오면 된다. System.out.println("이름 : "); String name = console.readLine(); // 한줄 읽기 System.out.println("비밀번호 : "); char[] password = console.readPas..
자바 입출력 스트림 장치하고는 상관없이 자바의 입출력을 추상화 해놓은 스트림이다. 입출력 스트림 이란 ? 네트웍에서 자료의 흐름이 물과 같다는 의미에서 유래 다양한 입출력 장치에 독립적으로 일관성 있는 입출력 방식을 제공한다. 입출력이 구현되는 곳에서는 모두 I/O 스트림을 사용한다 : 키보드 , 파일 디스크 , 메모리 등이 있다. 장치에 무엇이냐 따라서 해당하는 기능이 여러가지고 구현될수있는데 그것들을 추상화 한다 (이미지) 입출력 스트림 구분 I/O 대상 기준 : 입력 스트림 , 출력 스트림 자바의 종류 : 바이트 스트림 , 문자 스트림 스트림의 기능 : 기반 스트림(기본인가) , 보조 스트림(기능보조) 문자 스트림이나 바이트 스트림이나 기반스트림은 읽거나 쓰고 보조스트림은 기반스트림을 서포터해주는 ..
꾸준히개발하자
꾸준히