Java 공부 (27) 썸네일형 리스트형 12장 동기화 메소드와 동기화 블록 공유 객체를 사용하면 문제점이 발생한다. User1스레드와 User2스레드가 Calculator라는 객체를 함께 사용하게 된다면 문제점이 발생한다.User1스레드가 Calculator객체의 memory필드에 100이라는 값을 저장하고 2초간 일시정지 상태에 있는다.이때 User2스레드가 실행을 하면서 memory필드의 값을 50으로 변경한다. 그리고 2초간 일시정지 상태에 있는다.정지상태가 끝난 User1스레드가 Calculator객체 안에 있는 memory값을 출력하게 되면 출력값은 50이 된다.이는 엉뚱한 값이 출력되는 것이다. 이렇게 공유객체를 사용하면서 발생하는 문제점을 개선하기 위해서 동기화 메소드와 동기화 블록을 사용할 수 있다. 동기화 메소드 및 동기화 블록 - synchronized-단 하.. 12장 스레드 우선순위 스레드 우선순위를 살펴보기 전에 동시성과 병렬성에 대해 살펴본다. 동시성 ( Concurrency )멀티 작업을 위해 하나의 코어에서 멀티 스레드가 번갈아가며 실행하는 성질ex) 코어1 - 스레드1, 스레드2, 스레드3 하나의 코어는 한시점에서 하나의 스레드만 실행할 수 있다. 따라서 스레드1 조금 실행시켜놓고, 그다음 스레드2를 조금 실행시키고, 이런식으로 번갈아가며 스레드를 실행시킨다. 하나의 코어가 하나의 스레드를 실행할 때, 다른 스레드들은 대기상태에 있다 병렬성 ( Parallelism )멀티작업을 위해 멀티 코어에서 개별 스레드를 동시에 실행하는 성질ex) 코어1 - 스레드1, 코어2-스레드2 CPU에 두개의 연산장치가 있는것 각 코어에서 스레드를 실행시키기 때문에 실행에 방해를 받지 않고 진.. 12장 작업 스레드 생성과 실행 작업스레드를 생성하려면 몇개의 작업을 병렬로 실행할지 결정한다.이후 작업스레드를 생성한다. 작업스레드를 생성하는 방법에는 두가지가 있다.-Thread 클래스로부터 직접 생성-Thread 하위 클래스로부터 생성 Thread 클래스로부터 직접 생성첫번째, 동시에 실행해야할 작업이 있다면 작업내용을 클래스로 만들고, Runnable를 구현하여 run메소드를 재정의한다. class Task implements Runnable {public void run() {스레드가 실행할 코드;}} 두번째, 방법1,2,3 중 하나를 선택하여 쓰레드 객체를 생성하고, 객체 안에 생성한 클래스를 매개값으로 넣어준다. 방법1) Runnable의 객체 생성 후 Thread의 매개값에 대입Runnable task = new Task.. 11장 API정리_String클래스 String 클래스- java.lang패키지에 속한 클래스-자바의 문자열은 String클래스의 인스턴스로 관리된다.-문자열 리터럴은 String객체로 자동 생성되지만, String 클래스의 다양한 생성자를 이용해서 직접 String객체를 생성할 수도 있다. 파일의 내용을 읽거나, 네트워크를 통해 받은 데이터는 보통 byte[]배열이므로 이것을 문자열로 변환하기 위해 자주쓰는 String클래스의 생성자가 있다. byte[]배열을 문자열로 변환하는 String 클래스의 생성자 //배열 전체를 String 객체 생성String str = new String(byte[] bytes); //지정한 문자셋으로 디코딩String str = new String(byte[] bytes, String charsetName.. 11장 API정리_Class클래스 Class 클래스?-클래스와 인터페이스의 메타데이터를 Class 클래스로 관리 *메타데이터? 클래스 이름, 생성자 정보, 필드 정보, 메소드 정보 -클래스와 인터페이스의 메타데이터를 얻을 수 있다(리플렉션) Class객체를 얻는 방법은 두가지가 있다.1. 객체로부터 얻는 방법 : getClass() Class clazz = obj.getClass(); --> 최상위 클래스인 Object클래스가 가지고 있는 getClass()메소드2. 문자열로부터 얻는 방법 : forName() try{Class clazz = Class.forName(String className);} catch(ClassNotFoundException e) { } 동적 객체 생성 : newInstance()-이렇게 만들어진 Class .. 11장 API 정리_Object클래스 자바 API?-자바에서 기본적으로 제공되는 라이브러리-프로그램 개발에 자주 사용되는 클래스 및 인터페이스의 모음을 말한다. API 도큐먼트?-쉽게 API를 찾아 이용할 수 있도록 문서화 한것- https://docs.oracle.com/javase/8/docs/api/index.html java.lang패키지?-자바 프로그램의 기본적인 클래스를 담고 있는 패키지-포함된 클래스와 인터페이스는 import없이 사용 가능-주요클래스 Object System Class String StringBuffer, StringBuilder Math Wrapper(byte. short, character, Integr, Float, Double, Boolean) 그중에서도 자바의 최상위 부모 클래스인 Object에 대해서.. 12장 멀티스레드 프로세스란?- 실행 중인 하나의 프로그램을 말한다.- 프로그램 하나에 여러가지의 프로세스가 실행될 수 있다. 1프로그램-1프로세스 (X) ex) 인터넷익스플로어를 실행시키면 하나의 프로세스가 생성이 되고, 또 다른 익스플로어를 실행시키면 또다른 프로세스가 생성되는 것 멀티 태스킹?- 두가지 이상의 작업을 동시에 처리하는 것- 멀티 태스킹을 하기 위해서는 두가지 방법을 사용할 수 있다. 1. 멀티 프로세스 : 독립적으로 프로그램들을 실행하고 여러 가지 작업 처리 프로그램에서 여러 개의 프로세스를 생성 2. 멀티 스레드 : 한 개의 프로그램을 실행하고 내부적으로 여러 가지 작업 처리 하나의 프로세스 내에서 여러 개의 스레드를 실행하는 것 ex) 메신저 : 문자채팅하면서 파일전송 : 문자채팅스레드 + 파일전송.. 이전 1 2 3 다음