목차
Ⅰ. 서론
Ⅱ. 자바(JAVA)와 컴퓨터시스템
Ⅲ. 자바(JAVA)의 개념
Ⅳ. 자바(JAVA)의 특성
1. 간단하다, 객체 지향이다, 친숙하다
2. 신뢰성과 보안성이 있다
3. 아키텍쳐 중립적이며 이식성이 높다
4. 높은 수행성능
5. 인터프리터형이다, 쓰레드를 지원한다, 동적 연결에 기반하여 수행한다
Ⅴ. 자바(JAVA)의 장단점
1. 자바스크립트의 장점
1) 신속한 개발
2) 배우기 쉬움
3) 환경에 독립적
4) 적은 시스템 부하
2. 자바스크립트의 단점
1) 내장 메소드의 한계성
2) 코드의 숨김이 불가능
3) 디버깅 및 개발 도구의 부족
Ⅵ. 자바(JAVA)의 문자편집
1. 주석문과 문자열 출력
2. If문
3. For문
4. 명령행 인자 받아들이기
5. 사용자로부터 키보드 입력받기
Ⅶ. 자바(JAVA)의 이벤트편집
1. 이벤트란
2. 이벤트 핸들러(event handler)
3. 이벤트 흉내내기(event emulating)
4. onLoad 및 onUnload 이벤트 핸들러 활용
5. window.open()의 활용
6. 이벤트와 폼
1) 일반적인 폼 이벤트
2) 기타 폼 이벤트
3) 폼 태그를 이용한 이벤트 핸들러 활용
Ⅷ. 자바(JAVA)의 Thread처리
1. Thread란 무엇인가
2. Thread의 속성값
3. Thread의 Body
1) 간단한 thread 예제
2) Thread의 상태, 단계.
4. Multithreaded Progmrams
5. 동기화
Ⅸ. 결론
참고문헌
Ⅱ. 자바(JAVA)와 컴퓨터시스템
Ⅲ. 자바(JAVA)의 개념
Ⅳ. 자바(JAVA)의 특성
1. 간단하다, 객체 지향이다, 친숙하다
2. 신뢰성과 보안성이 있다
3. 아키텍쳐 중립적이며 이식성이 높다
4. 높은 수행성능
5. 인터프리터형이다, 쓰레드를 지원한다, 동적 연결에 기반하여 수행한다
Ⅴ. 자바(JAVA)의 장단점
1. 자바스크립트의 장점
1) 신속한 개발
2) 배우기 쉬움
3) 환경에 독립적
4) 적은 시스템 부하
2. 자바스크립트의 단점
1) 내장 메소드의 한계성
2) 코드의 숨김이 불가능
3) 디버깅 및 개발 도구의 부족
Ⅵ. 자바(JAVA)의 문자편집
1. 주석문과 문자열 출력
2. If문
3. For문
4. 명령행 인자 받아들이기
5. 사용자로부터 키보드 입력받기
Ⅶ. 자바(JAVA)의 이벤트편집
1. 이벤트란
2. 이벤트 핸들러(event handler)
3. 이벤트 흉내내기(event emulating)
4. onLoad 및 onUnload 이벤트 핸들러 활용
5. window.open()의 활용
6. 이벤트와 폼
1) 일반적인 폼 이벤트
2) 기타 폼 이벤트
3) 폼 태그를 이용한 이벤트 핸들러 활용
Ⅷ. 자바(JAVA)의 Thread처리
1. Thread란 무엇인가
2. Thread의 속성값
3. Thread의 Body
1) 간단한 thread 예제
2) Thread의 상태, 단계.
4. Multithreaded Progmrams
5. 동기화
Ⅸ. 결론
참고문헌
본문내용
g philosopher)를 예로 들어 설명하며, deadlock을 피하는 방법을 보이겠다.
Java monitor는 re-entrant이다.
5. 동기화
동시에(concurrently) 실행되는 thread는 data를 공유하기 위해서 서로 다른 thread의 상태(state)와 행동(activities)을 고려햐야하는 재미있는 상황이 자주 발행한다. 일반적으로 생산자/소비자(Procuder/Consumer)의 예를 많이 들어 설명하듯이 이곳에서도 그러한 방식으로 설명하겠다. 예를 들어서, Java application에서 file에 data를 write하는 thread(producer)가 있고, file에서 data를 읽어 오는 thread(consumer)가 있다고 가정하자. 또는, keyboard에서 key입력을 기다릴 때 producer가 key event를 queue에 쓰고, consumer는 같은 queue에서 event를 읽어오는 경우가 있다. 이 모든 예는 common resource를 공유하는 concurrent thread이다. 그리고 이 thread는common resource를 공유하기 때문에, 어떠한 방법으로든 동기화 되어야 한다.
Producer/Consumer Example
다음은 0~9가지 세면서 \"CubbyHole\" object에 값을 저장하고, 값을 출력하는 Producer이다. 그리고 0~100 millisecond동안 불규칙하게 sleep한다.
class Producer extends Thread
private CubbyHole cubbyhole;
private int number;
public Producer(CubbyHole c, int number)
cubbyhole = c;
this.number = number;
public void run()
for (int i = 0; i < 10; i++)
cubbyhole.put(i);
System.out.println(\"Producer #\" + this.number + \" put: \" + i); try
sleep((int)(Math.random() * 100));
catch (InterruptedException e)
다음은 CubbyHole에서 모든 integer를 소모하는 Consumer이다.
class Consumer extends Thread
private CubbyHole cubbyhole;
private int number;
public Consumer(CubbyHole c, int number)
cubbyhole = c;
this.number = number;
public void run()
int value = 0;
for (int i = 0; i < 10; i++)
value = cubbyhole.get();
System.out.println(\"Consumer #\" + this.number + \" got: \" + value);
위의 예에서, Producer와 Consumer는 \"CubbyHole\" object를 통해서 data를 공유한다. 그러나 위의 예에서 Producer가 값을 쓰고, Consumer가 값을 하나 읽는 부분을 명시한 부분은 CubbyHole에서 get(), put() method를 사용하여 내부적으로 표현되었다. 그러나 주위할 점은 이 두 thread의 동기화에 관한 부분은 없다.
그러면 발생되는 첫번째 문제를 고려해본다. Producer가 Consumer보다 빨라서 Producer가 2개를 처리했는데, Cunsumer는 하나밖에 처리하지 못해서, Consumer는 하나를 건너뛰게 되었다. 따라서 다음과 같은 결과가 나올 수 있다.
. . .
Consumer #1 got: 3
Producer #1 put: 4
Producer #1 put: 5
Consumer #1 got: 5
. . .
또 다른 문제점이 발생할 수 있다. Consumer가 Producer보다 빨라서 Cunsumer는 같은 값을 두 번 읽어갔다. 따라서 다음과 같은 결과가 나올 수 있다.
. . .
Producer #1 put: 4
Consumer #1 got: 4
Consumer #1 got: 4
Producer #1 put: 5
. . .
위의 두 경우는 모두 잘못되었다. 우리는 Producer가 정확히 하나를 write하면 Consumer는 정확히 하나를 읽어가기를 바란다. 위와 같이, 하나의 object를 사용하여 여러 개의 thread가 동시에 비동기적(asynchronously)으로 실행되어 잘못된 결과를 초래하는 것을 \"race condition\"이라고 한다. 위와 Producer/Consumer예제에서 race condition을 방지하기 위해, Producer와 Consumer는 동기화(synchronized)가 되어야 한다. 또한, CubbyHole과 같은 object는 동시에 두개의 thread에 의해서 동기화 되면서 접근되는데, 이러한 object를 \"condition variable\"이라고 한다. Java language는 \'monitors\'를 이용하여 condition variable을 이용하는 thread를 동기화 시킨다.
Ⅸ. 결론
자바 프로그래밍 언어를 사용하면, 애프릿-HTML 문서에 포함되는 네트워크 소프트웨어-과 독립형애플리케이션 모두를 잎가성할 수 있다. C나 C++ 프로그래밍 작성에서와 마찬가지로 이 두 종류의 자바프로그램은 텍스트 편집기에서 자바 소스 코드를 작성해야 한다. 그런 다음 자바 컴파일러를 이용해서, 이 프로그램들을 플랫폼에 맞춰 자바 실행 시간 환경에서 실행할 수 있는 이진 바이트코드 포맷으로 컴파일한다. 자바에 대한 의도가 무엇이든 간에 자바 프로그래밍 언어의 구조와 구문을 이해해야한다.
참고문헌
김석주, 김석주와 함께하는 자바2
김희천·정재헌, 완벽 자바 프로그래밍, 생능출판사, 2005
고일석, 예제로 배우는 JAVA programming, 혜지원
윤성우, 열혈강의 C++ 프로그래밍
자바배움터, 생능 출판사, 2001
케이시 시에라·버트 베이츠, HeadFirst Java, 한빛 미디어
Java monitor는 re-entrant이다.
5. 동기화
동시에(concurrently) 실행되는 thread는 data를 공유하기 위해서 서로 다른 thread의 상태(state)와 행동(activities)을 고려햐야하는 재미있는 상황이 자주 발행한다. 일반적으로 생산자/소비자(Procuder/Consumer)의 예를 많이 들어 설명하듯이 이곳에서도 그러한 방식으로 설명하겠다. 예를 들어서, Java application에서 file에 data를 write하는 thread(producer)가 있고, file에서 data를 읽어 오는 thread(consumer)가 있다고 가정하자. 또는, keyboard에서 key입력을 기다릴 때 producer가 key event를 queue에 쓰고, consumer는 같은 queue에서 event를 읽어오는 경우가 있다. 이 모든 예는 common resource를 공유하는 concurrent thread이다. 그리고 이 thread는common resource를 공유하기 때문에, 어떠한 방법으로든 동기화 되어야 한다.
Producer/Consumer Example
다음은 0~9가지 세면서 \"CubbyHole\" object에 값을 저장하고, 값을 출력하는 Producer이다. 그리고 0~100 millisecond동안 불규칙하게 sleep한다.
class Producer extends Thread
private CubbyHole cubbyhole;
private int number;
public Producer(CubbyHole c, int number)
cubbyhole = c;
this.number = number;
public void run()
for (int i = 0; i < 10; i++)
cubbyhole.put(i);
System.out.println(\"Producer #\" + this.number + \" put: \" + i); try
sleep((int)(Math.random() * 100));
catch (InterruptedException e)
다음은 CubbyHole에서 모든 integer를 소모하는 Consumer이다.
class Consumer extends Thread
private CubbyHole cubbyhole;
private int number;
public Consumer(CubbyHole c, int number)
cubbyhole = c;
this.number = number;
public void run()
int value = 0;
for (int i = 0; i < 10; i++)
value = cubbyhole.get();
System.out.println(\"Consumer #\" + this.number + \" got: \" + value);
위의 예에서, Producer와 Consumer는 \"CubbyHole\" object를 통해서 data를 공유한다. 그러나 위의 예에서 Producer가 값을 쓰고, Consumer가 값을 하나 읽는 부분을 명시한 부분은 CubbyHole에서 get(), put() method를 사용하여 내부적으로 표현되었다. 그러나 주위할 점은 이 두 thread의 동기화에 관한 부분은 없다.
그러면 발생되는 첫번째 문제를 고려해본다. Producer가 Consumer보다 빨라서 Producer가 2개를 처리했는데, Cunsumer는 하나밖에 처리하지 못해서, Consumer는 하나를 건너뛰게 되었다. 따라서 다음과 같은 결과가 나올 수 있다.
. . .
Consumer #1 got: 3
Producer #1 put: 4
Producer #1 put: 5
Consumer #1 got: 5
. . .
또 다른 문제점이 발생할 수 있다. Consumer가 Producer보다 빨라서 Cunsumer는 같은 값을 두 번 읽어갔다. 따라서 다음과 같은 결과가 나올 수 있다.
. . .
Producer #1 put: 4
Consumer #1 got: 4
Consumer #1 got: 4
Producer #1 put: 5
. . .
위의 두 경우는 모두 잘못되었다. 우리는 Producer가 정확히 하나를 write하면 Consumer는 정확히 하나를 읽어가기를 바란다. 위와 같이, 하나의 object를 사용하여 여러 개의 thread가 동시에 비동기적(asynchronously)으로 실행되어 잘못된 결과를 초래하는 것을 \"race condition\"이라고 한다. 위와 Producer/Consumer예제에서 race condition을 방지하기 위해, Producer와 Consumer는 동기화(synchronized)가 되어야 한다. 또한, CubbyHole과 같은 object는 동시에 두개의 thread에 의해서 동기화 되면서 접근되는데, 이러한 object를 \"condition variable\"이라고 한다. Java language는 \'monitors\'를 이용하여 condition variable을 이용하는 thread를 동기화 시킨다.
Ⅸ. 결론
자바 프로그래밍 언어를 사용하면, 애프릿-HTML 문서에 포함되는 네트워크 소프트웨어-과 독립형애플리케이션 모두를 잎가성할 수 있다. C나 C++ 프로그래밍 작성에서와 마찬가지로 이 두 종류의 자바프로그램은 텍스트 편집기에서 자바 소스 코드를 작성해야 한다. 그런 다음 자바 컴파일러를 이용해서, 이 프로그램들을 플랫폼에 맞춰 자바 실행 시간 환경에서 실행할 수 있는 이진 바이트코드 포맷으로 컴파일한다. 자바에 대한 의도가 무엇이든 간에 자바 프로그래밍 언어의 구조와 구문을 이해해야한다.
참고문헌
김석주, 김석주와 함께하는 자바2
김희천·정재헌, 완벽 자바 프로그래밍, 생능출판사, 2005
고일석, 예제로 배우는 JAVA programming, 혜지원
윤성우, 열혈강의 C++ 프로그래밍
자바배움터, 생능 출판사, 2001
케이시 시에라·버트 베이츠, HeadFirst Java, 한빛 미디어
추천자료
(JAVA) 문장을 입력 받고, 문장에 포함된 단어의 개수, 평균 길이를 구한뒤, 각 단어를 역순...
OOP[객체지향프로그래밍] java,JSP,EJB,CBD,UML,C# &.Net
POS시스템에 대한 연구와 JAVA커피전문점의 실제적용
자바입문 13장:자바의 기본 패키지
[JSP][자바 애플릿][JSP의 이해][자바 애플릿의 이해][JSP의 문법][자바 애플릿의 문법]JSP(...
2010년 2학기 JAVA프로그래밍 출석대체시험 핵심체크
2010년 2학기 JAVA프로그래밍 기말시험 핵심체크
2011년 1학기 Java프로그래밍 기말시험 핵심체크
메신저 (java, icon)
간단한 JAVA Swing을 이용한 계산기
(JAVA) 돈을 입력받아 각각 잔돈을 나누는 프로그램 & 1부터 99까지 정수를 받아서 3,6,9...
(JAVA) 그래픽 글자크기 및 순서 변경 소스코드
(JAVA) 데이터 베이스 입력 소스코드
[JAVA] 구구단 프로그램 소스,계획안,보고서,설명문
소개글