본문 바로가기

반응형

분류 전체보기

CUI 와 GUI 개념 차이 1. CUI : Character User Interface컴퓨터하고 사용자하고 글자로 명령을 주고 받는 방식 작동방식 : main에서 출발하여 순차적으로 알아서 쭈욱 실행되는 형태 2. GUI : Graphic User Interface그래픽 화면에서 버튼을 누르거나 해서 컴퓨터에게 일을 시키는 방식 작동방식 : 사용자가 버튼을 누르거나 어떤 명령을 내릴때까지 기다리다가 명령을 받으면 해당 처리를 하는 방식==> 이벤트 드리븐 방식 더보기
쓰레드 사이의 통신 쓰레드 사이의 통신: 두개 이상의 쓰레드를 가동시키면 자바는 가급적 이들이 서로 공평(서로 균등하게 기회를 주도록)하게 실행이 되도록 스케쥴링 해준다. 그런데 만약 두개의 쓰레드가 반드시 일대일로 실행하거나 혹은 특정 조건을 만족할 동안 쓰레드를 대기상태에 있도록 하기 위해서는 쓰레드간의 통신이 필요하다. 자바의 제일 조상 클래스인 Object 의 wait(), notify() 메소드를 이용한다.wait() : 자신을 대기 상태로 만듬notify() : wait 상태에 있는 쓰레드를 깨워줌 더보기
임계영역이란? 임계영역: 두개 이상의 쓰레드가 특정 자원을 공유하고 있을 때 한번에 하나의 쓰레드에게만 접근을 허용하고자 하는 영역을 말함 자바는 이러한 임계영역의 처리를 위하여 synchronized 키워드 제공즉, 임계영역의 처리를 위한 메소드명 앞에 synchronized 키워드를 붙이면 자바가 알아서 특정 쓰레드가 공유자원에 접근하면 바로 락을 걸어 다른 쓰레드가 접근 할 수 없도록 하고 일이 끝나면 락을 풀어 다른 쓰레드가 접근 할 수 있도록 처리된다. 혹은 메소드의 일부분을 synchronized{} 으로 처리 할 수도 있다. 예)public void 메소드명(){a;b; synchronized{c;d;e;}} 더보기
자바 Thread 가 필요한 이유 Thread 필요한 이유: 자바 프로그래밍에서 일반적으로 어떤 일처리를 위한 것은 메소드의 형태로 표현된다. 즉, 객체를 통하여 메소드 호출문에 의해서 일처리가 이루어 진다. 이것은 메소드 호출문 순서대로 동작하기 때문에 만약에 두개 이상의 객체에게 각각의 메소드를 호출하였다면뒤에 호출할 객체는 먼저 호출한 객체의 작업이 메소드의 내용이 끝날 때까지 기다려야 한다.만약 먼저 호출한 메소드 수행 중에 문제가 발생된다면 뒤에 호출한 객체에게는 영영 기회가 오지 않을 수도 있다. 이를 해결하기 위한 개념 ==> '멀티 쓰레드 프로그래밍' 이것을 위하여 자바는 ThreadRunnable 을 제공한다. 또, Thread를 움직임이 있는 그래픽을 표현할 용도로 사용하기도 합니다. 더보기
자바 예제 - join() 메소드 ** join() 메소드Thread를 가동시키게 되면 자바는 Thread를 수행하는데 오랜 시간이 걸릴 것으로 나름대로 판단하여 Thread 가동 이후의 문장을 먼저 수행시키는 경향이 있다.만약 쓰레드가 완료된 후에 그 다음 작업이 실행되길 원한다면 join 메소드를 이용한다. ** join() 을 사용하려면 예외처리를 해야한다. 예외처리전)class PersonTest04{public static void main(String[] args) { Person p1 = new Person("송인욱");Person p2 = new Person("최영록"); p1.start();p2.start(); p1.join();p2.join(); System.out.println("작업종료");}} 예외처리후)class.. 더보기
자바 예제 - Thread 를 이용한 우선순위 설정 ** 두개 이상의 Thread를 가동시키면 가능하면 공평하게 실행이 되게끔 스케쥴링 된다. 그런데 만약 특정객체가 먼저 일이 끝날 수 있도록 요구된다면 쓰레드의 우선순위를 설정.반드시 그것이 먼저 끝나는 것을 보장하지 않는다. ** 쓰레드의 우선순위를 설정하는 메소드setPriority(정수값) 정수값의 범위 : 1 ~ 10 ** 우선순위 주는 예제 // 우선순위 주기class Person extends Thread{private String name;public Person(String name){this.name = name;} public void run(){for (int i = 1; i 더보기
자바 예제 - 멀티쓰레드 프로그래밍 방법 ** 멀티쓰레드 프로그래밍 방법 ** run() 과 start() 차이 비교를 위한 예제1. 기본구조2. API 나온 형식3. ** run() 과 start() 차이 비교를 위한 예제 class Person extends Thread{private String name; public Person(String name){this.name = name;} public void run(){for (int i = 1; i 더보기
자바 개념 - 멀티 쓰레드(Thread) 프로그래밍 설명 및 간단한 예제 ** 멀티 쓰레드(Thread) 프로그래밍 : 자바프로그램에서 어떤 일처리를 위한 것을 메소드로 표현되는 것이 일반적이다. p1.sayHello();p2.sayHello(); 위의 문장을 실행하면 p2는 p1의 sayHello()가 끝날때까지 대기해야 한다.만약 그속의 문장이 복잡하거나 문제가 발생이 된다면 p2는 끝없이 기다려야 하거나 자신에게 기회가 오지 않을 수도 있다. 이때 가능하면 p1과 p2에게 공평하게 실행할 기회를 주고자 한다면 'Thread'를 이용한다. 자바는 이와같이 멀티쓰레드 프로그래밍을 위하여 아래와 같이 제공한다.Thread 클래스와 Runnable 인터페이스를 제공한다. ** 필요성을 느끼기 위한 예제 // 밑에 예제의 같은 경우 p1의 실행이 끝나야 p2가 진행되는데 // 만.. 더보기

반응형