JAVA/Java2021-3 (25) 썸네일형 리스트형 동기화 프로그래밍 (wait(), notify()->notifyAll() 사용 추천) 여러개의 resource 중 가능한 상태가 될 때 깨우기!! ex) 책을 빌리는 경우(책은 한정, 사람은 많다) - notify() 책 7권 사람 5명 오류 안생김 package Basic_Grammar.chap6.ch16멀티스레드동기화2; import java.util.ArrayList; class PublicLibrary{ public ArrayList shelf=new ArrayList(); public PublicLibrary() { shelf.add("태백산맥1"); shelf.add("태백산맥2"); shelf.add("태백산맥3"); shelf.add("태백산맥4"); shelf.add("태백산맥5"); shelf.add("태백산맥6"); shelf.add("태백산맥7"); } public .. Multi-Thread 프로그래밍과 동기화(Critical section, semaphore) Critical section과 semaphore ex) Bank 자원을 shared resource라고 생각하고 예시 Bank 클래스 객체하나를 static으로 선언하여 진행 package Basic_Grammar.chap6.ch15멀티스레드동기화; class Bank{ private int money=10000; //초기값 10000원으로 선언 public void saveMoney(int save){ int m=getMoney(); try{ Thread.sleep(3000); //3초 후 실행 } catch (InterruptedException e) { e.printStackTrace(); } setMoney(m+save); } public void minusMoney(int minus){ int.. Thread 클래스의 메서드(우선순위,join(),interrupt(),Thread종료) Thread 우선순위 getPriority(), setPriority() package Basic_Grammar.chap6.ch14스레드메서드; class PriorityThread extends Thread{ public void run(){ int sum=0; Thread t=Thread.currentThread(); System.out.println(t+" start"); for (int i = 0; i < 1000000; i++) { sum+=i; } System.out.println(t.getPriority()+" end"); } } public class PriorityTest { public static void main(String[] args) { int i; // for (i = Thr.. Thread Status (Start, Run, Runnable, Not Runnable, Dead) 1. 컴퓨터 구조(CPU, HDD, 메모리(슬롯으로 있다)) 2. 프로그램을 실행 시키려고 하면 메모리에 올라간다 (Process : 프로그램이 메모리 공간을 가지고 있는 상태) 3. 메모리에 올라간 프로그램이 실행되려면 CPU를 점유해야한다. (CPU를 점유하는 단위가 process전체가 아니라 Thread 단위) 4. Scheduler가 쓰레드를 배분하여 CPU가 실행시킨다. Thread 란? : 프로그램이 실행되면 OS로 부터 메모리를 할당 받아 프로세스 상태가 되고 하나의 프로세스는 하나 이상의 thread를 가지고 되고, 실제 작업을 수행하는 단위이다. 각 Thread의 resource 관리 : Context 영역 공통 resource 관리 : Shared Resource에서 관리 (Critic.. Thread 생성 (extends Thread, implements Runnable) 1. 컴퓨터 구조(CPU, HDD, 메모리(슬롯으로 있다)) 2. 프로그램을 실행 시키려고 하면 메모리에 올라간다 (Process : 프로그램이 메모리 공간을 가지고 있는 상태) 3. 메모리에 올라간 프로그램이 실행되려면 CPU를 점유해야한다. (CPU를 점유하는 단위가 process전체가 아니라 Thread 단위) 4. Scheduler가 쓰레드를 배분하여 CPU가 실행시킨다. Thread 란? : 프로그램이 실행되면 OS로 부터 메모리를 할당 받아 프로세스 상태가 되고 하나의 프로세스는 하나 이상의 thread를 가지고 되고, 실제 작업을 수행하는 단위이다. 각 Thread의 resource 관리 : Context 영역 공통 resource 관리 : Shared Resource에서 관리 (Critic.. RandomAccessFile 클래스 RandomAccessFile 클래스 : 입출력 클래스 중 유일하게 파일에 대한 입력과 출력을 동시에 할 수 있는 클래스 package Basic_Grammar.chap6.ch12File클래스; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; public class RandomAccessFileTest { public static void main(String[] args) throws IOException { RandomAccessFile randomAccessFile=new RandomAccessFile("random.txt","rw"); randomAccessFile.wr.. File 클래스 File : 입출력 기능은 없고, 파일의 이름, 경로, 읽기 전용등의 속성을 알 수 있고 여러 메서드 있음 package Basic_Grammar.chap6.ch12File클래스; import java.io.File; import java.io.IOException; public class FileTest { public static void main(String[] args) throws IOException { File file=new File("JavaTest\\newFile.txt"); file.createNewFile(); System.out.println(file.isFile()); System.out.println(file.isDirectory()); System.out.println(fil.. 직렬화(Serializable, Externalizable ) 직렬화란? : 인스턴스의 상태를 그대로 파일 저장하거나 네트워크로 전송하고(serialization) 이를 다시 복원(deserialization) 하는 방식 객체가 인스턴스화 하여 메모리에 있으면 계속 값이 변한다. -> 생성자로 생성한 값이 아니라 그 이후에 메서드를 호출하면서 값이 계속 변화한다. -> 어느 순간 상태 그대로를 저장한다거나 네트워크에 전송할 필요가 있을 때 --> 바이트 스트림의 연속으로 만들어서 이 객체의 정보를 그대로 저장했다가 그대로 복원할 수 있도록 (Serialization) 구현 코드는 없고 serializable implements를 해주어야 된다 (marker interface) transient사용하면 제외하고 직렬화한다. package Basic_Grammar.ch.. 이전 1 2 3 4 다음