본문 바로가기

728x90
반응형

개발 기록

[java] 이것이 자바다 ch14 스레드(thread) 2 6. 스레드 동기화 ◎ 동기화 메소드와 블록 ▷ 스레드 작업이 끝날 때까지 객체에 잠금을 걸어 스레드가 사용 중인 객체를 다른 스레드가 변경할 수 없게 합니다. ◎ 동기화 메소드 및 블록 선언 ▷ 인스턴스와 정적 메소드에 synchronized 키워드를 붙입니다. ▷ 동기화 메소드를 실행 즉시 객체는 잠금이 일어나고, 메소드 실행이 끝나면 잠금이 풀립니다. ▷ 메소드 일부 영역 실행 시 객체 잠금을 걸고 싶다면 동기화 블록을 만들어줍니다. ◎ 동기화 메소드 예제 1. Calculator 클래스 public class Calculator { private int memory; public int getMemory() { return memory; } // 동기화 메소드 public synchronized .. 더보기
[java] 이것이 자바다 ch14 스레드(thread) 1. 멀티 프로세스와 멀티 스레드 ▷ 프로세스 : 운영체제는 실행 중인 프로그램을 관리 ▷ 멀티 태스킹 : 두 가지 이상의 작업을 동시에 처리하는 것 ▷ 스레드 : 코드의 실행 흐름 ▷ 멀티 스레드 : 두 개의 코드 실행 흐름. 두 가지 이상의 작업을 처리 ▷ 멀티 프로세스 : 프로그램 단위의 멀티 태스킹 / 멀티 스레드 : 프로그램 내부에서의 멀티 태스킹 2. 메인 스레드 ▷ 메인 스레드는 main() 메소드의 첫 코드부터 순차적으로 실행 ▷ main() 메소드의 마지막 코드를 실행하거나 return 문을 만나면 실행 종료 ▷ 메인 스레드는 추가 작업 스레드들을 만들어서 실행시킬 수 있음 ▷ 메인 스레드가 작업 스레드보다 먼저 종료되더라도 작업 스레드가 계속 실행 중이라면 프로세스는 종료되지 않음. 3.. 더보기
[백준 문제 2941번] 크로아티아 알파벳 문제 https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 문제 2941) 크로아티아 알파벳 문제) 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. dž는 무.. 더보기
[백준 문제 1152번] 단어의 개수 문제 https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net 문제 1152) 단어의 개수 문제) 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다. 입력) 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백.. 더보기
[백준 문제 1157번] 단어 공부 문제 https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 문제 1157) 단어 공부 문제 문제) 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. 입력) 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. 출력) 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러.. 더보기
[java] 스레드(Thread) 1. 스레드란? ▷ 메모리를 할당받은 프로세스에서 실질적인 작업을 수행하는 것입니다. ▷ 하나의 프로세스 안에서 두 가지 이상의 일을 하도록 도와줍니다. 프로그램을 실행시키면 메모리가 할당되어 실행됩니다. 이때, 실행 중인 프로그램은 프로세스! 프로세스에서 작업을 수행하는 것이 스레드이며 두 가지 이상의 작업을 하려면 두 개 이상의 스레드가 필요 ◎ 프로세스가 실행되는 방식 1. 시간분할 방식 ▷ 시간분할 방식은 모든 프로세스에게 동일한 시간을 할당하고 골고루 실행합니다. 2. 선점형 방식 ▷ 선점형 방식은 각각의 프로세스에게 우선순위를 부여하고 우선순위가 높은 순으로 실행되는 방식입니다. 우선순위가 높은 프로세스가 잠시 멈추면 그다음 순위의 프로세스가 동작합니다. ◎ 스레드 생성 방법 1. Thread.. 더보기
[java] 이것이 자바다 ch13 제네릭(Generic) 1. 제네릭 ▷ 결정되지 않은 타입을 파라미터로 처리하고 실제 사용할 때 파라미터를 구체적인 타입으로 대체시키는 기능 ▷ 는 T가 타입 파라미터임을 뜻하는 기호. 타입이 필요한 자리에 T를 사용할 수 있음을 알려줍니다. 1. Box에 넣을 내용물로 content 필드를 선언 public class Box{ public ? content; } 2. 클래스 타입 선언 대신 Object 타입 선언 public class Box{ public Object content; } 3. Object는 최상위 부모 클래스이므로 자동 타입 변환되어서 어떤 객체든 대입 가능합니다. Box box = new Box(); box.content = 모든 객체; 4. 강제 타입 변환 String content = (String) .. 더보기
[java] 이것이 자바다 ch12 어노테이션(annotation) 1. 어노테이션 ▷ 코드에서 @으로 작성되는 요소 ▶ 클래스 또는 인터페이스를 컴파일하거나 실행할 때 어떻게 처리해야 할 것인지를 알려주는 설정 정보 ▷ ① 컴파일시 사용하는 정보 전달 ▷ ② 빌드 툴이 코드를 자동으로 생성할 때 사용하는 정보 전달 ▷ ③ 실행 시 특정 기능을 처리할 때 사용하는 정보 전달 2. 어노테이션 타입 정의와 적용 ▷ @interface 뒤에 사용할 어노테이션 이름 작성 public @interface AnnotationName{ // 정보전달할 값 정의; } @AnnotationName 3. 어노테이션 적용 대상 ▷ 어노테이션을 적용할 수 있는 대상의 종류는 ElementType 열거 상수로 정의 ▷ @Target 어노테이션으로 적용 대상 지정. @Target의 기본 속성 v.. 더보기

728x90
반응형