29강 JAVA 스레드 - 스레드란? - 멀티스레드 문법 - synchronized Lecturer Kim Myoung-Ho

Slides:



Advertisements
Similar presentations
17 강. 인터페이스 – I - 인터페이스의 이해 - 인터페이스의 문법 - 다형성이란 ? Lecturer Kim Myoung-Ho Nickname 블스
Advertisements

4강. Servlet 맛보기 Servlet 문서 작성 하기 web.xml에 서블릿 맵핑 어노테이션을 이용한 서블릿 맵핑
5강. Servlet 본격적으로 살펴보기-I 프로젝트 만들기 doGet() doPost()
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
Bluetooth Billionton Setup
31강 JAVA 네트워크 JAVA 네트워크 InetAdress, URLConnection 클래스 Socket의 이해
9강. AOP(Aspect Oriented Programming)-I
25강. Security-I 보안 관련 프로젝트 생성 보안 관련 라이브러리 추가 보안 관련 설정 파일 만들기
스레드란? 멀티 태스킹(muli-tasking)는 여러 개의 애플리케이션을 동시에 실행하여서 컴퓨터 시스템의 성능을 높이기 위한 기법 그림23-1. 병철 처리의 예.
Chap08 다중 스레드 8.1 스레드 개요 8.2 Thread 클래스와 스레드 생명주기 8.3 스레드 생성과 사용
6강. DI설정 방법 XML파일을 이용한 DI설정 방법 JAVA를 이용한 DI설정 방법 XML과 JAVA를 같이 사용
5강. DI활용 의존 관계 DI사용에 따른 장점 Lecturer Kim Myoung-Ho Nickname 블스
자바 5.0 프로그래밍.
29강. MVC패턴을 이용한 게시판 만들기-III
18강. 데이터 베이스 - II JDBC 살펴보기 Statement객체 살펴보기 Lecturer Kim Myoung-Ho
22강. 파일 업로드 - 파일 업로드 라이브러리 설치 - 파일 업로드 프로그래밍 Lecturer Kim Myoung-Ho
12강. 액션태그 액션태그란? forward, include, param 태그 살펴보기
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
9강. JSP 본격적으로 살펴보기-I JSP 태그의 개념 이해 JSP 동작 원리 JSP 내부 객체
21강. 스프링JDBC JDBC를 이용한 반복코드 줄이기 Spring빈을 이용한 코드 간소화
자바네트워크 제2주 실습 네트워크기초, 스레드.
6강. Servlet 본격적으로 살펴보기-II
16강. 추상클래스 - III - 자동차 옵션 제작 프로그래밍 Lecturer Kim Myoung-Ho Nickname 블스
25강 예외처리 - 예외란? - 예외처리의 필요성 - 예외처리 문법 (try ~ catch) - 예외처리 문법 (throws)
3강_HTML 기본-II 리스트 태그 - ul,li,ol 표를 나타내는 태그 - table 이미지를 출력하는 태그 – img
26강. 포워딩(Forwarding) RequestDispatcher 클래스 HttpServletResponse 클래스
19강. 데이터 베이스 - III 회원가입 및 회원정보 수정 프로그래밍 Lecturer Kim Myoung-Ho
28강_맵(Map) 맵을 이용하기 위한 설정 위치 추적 Lecturer Kim Myoung-Ho Nickname 블스
25강. FrontController 패턴과 Command 패턴
26강_CSS3 규칙 CSS파일 규칙 Lecturer Kim Myoung-Ho
23강. 트랜잭션(Transaction)-II
24강 API - III - Timer 클래스 - StringTokenizer 클래스 Lecturer Kim Myoung-Ho
15강. 예외 페이지 예외 페이지의 필요성 page 지시자를 이용한 예외 처리 web.xml파일을 이용한 예외 처리
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
17강_스마트폰 레이아웃-I viewport header 제작 네비 제작 Lecturer Kim Myoung-Ho
7장 인터페이스와 추상 클래스.
Method & library.
15강. 추상클래스 - II - 어린이집 아이들의 식대 계산 프로그래밍 Lecturer Kim Myoung-Ho
7가지 방법 PowerPoint에서 공동 작업하는 다른 사용자와 함께 편집 작업 중인 사용자 보기
27장. 모듈화 프로그래밍.
8강. 외부 파일을 이용한 설정 Environment 객체 프로퍼티 파일을 이용한 설정
14강. 추상클래스 - I - 추상클래스의 이해 - 추상클래스가 필요한 이유 - 추상클래스의 문법
30강 JAVA 그래픽 JAVA GUI(Graphic User Interface)란? AWT 컴포넌트? Swing 컴포넌트?
7강_CSS 기본-II id(#) 와 class(.) tag,id, class 혼합 속성 선택자 후손 및 자손 선택자
11강_CSS 속성-II margin 및 padding 속성 box-sizing 속성 border 속성
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
27강 JAVA Collections - II - Map계열 컬렉션 클래스 살펴보기 - Set계열 컬렉션 클래스 살펴보기
6강. 객체지향 프로그램의 시작 객체지향 이전의 프로그래밍 객체지향의 등장 배경과 이해 메소드의 이해
Part 4 클래스 라이브러리 Chapter 10 : 다중 스레드 Chapter 11 : 패키지와 주요 클래스
2강_첫번째 안드로이드 프로젝트 에뮬레이터(AVD) 만들기 처음 만들어 보는 프로젝트 전체적인 구성 살펴보기
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
지문적성검사 신청 1) 핸드폰에서 QR코드 읽기 하시거나 2) 인터넷 실행 후 a.ifas.kr
5강. 배열 배열이란? 배열의 문법 변수와 같이 이해하는 배열의 메모리 구조의 이해 레퍼런스의 이해 다차원 배열
7강. 객체지향 프로그램의 본질 메소드 프로그래밍의 한계 객체의 개념 및 클래스의 이해
26강 JAVA Collections - I - 컬렉션이란? - JAVA도 결국 효과적인 데이터를 처리하기 위한 수단
20강 패턴을 통한 객체지향 언어의 이해 - II - 난이도 있는 패턴 예제 - I Lecturer Kim Myoung-Ho
9강. 클래스 실전 학사 관리 프로그램 만들기 프로그래밍이란 결국 데이터를 효율적으로 관리하기 위한 공구
15강. 폼 데이터 값 검증 Validator를 이용한 검증 ValidationUtils 클래스
13강. Form 데이터 HttpServletRequest 어노테이션 데이터(커맨드) 객체
14강. 세션 세션이란? 세션 문법 Lecturer Kim Myoung-Ho Nickname 블스
27강_데이터베이스 SQLite CP(Content Provider) Lecturer Kim Myoung-Ho
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
22강. 트랜잭션(Transaction)-I
12강. 컨트롤러 컨트롤러 클래스 제작 요청 처리 메소드 제작 뷰에 데이터 전달
7강. 생명 주기(life cycle) 와 범위(scope)
엔코더 프로그램 설명 // 쓰레드를 사용하기 때문에 변수와 핸들을 전역변수로 지정 HANDLE hDevice;
15강_액티비티 액티비티란? 새로운 액티비티로 전환 생명주기 화면방향(Orientation)
Java의 정석 제 8 장 예외처리 (Exception handling) Java 정석 남궁성 강의
Power Java 제23장 스레드.
11강. static - static의 이해 - static과 객체와의 관계 - static의 장점과 단점
Presentation transcript:

29강 JAVA 스레드 - 스레드란? - 멀티스레드 문법 - synchronized Lecturer Kim Myoung-Ho Nickname 블스 blogstudy@naver.com

채팅프로그램 프로세스 객체0 객체0 객체1 객체2 29-1. 스레드란? 파일전송 스레드 채팅 스레드 스레드0 스레드0 스레드1 아마도 한 번쯤은 멀티 프로세스라는 말을 들어 본 적이 있을 겁니다. 멀티 프로세스란 컴퓨터가 여러 가지 일을 동시에 하고 있는 것을 뜻합니다. 지금 저의 경우 컴퓨터에서 음악이 나오고, 워드프로그램을 사용하고, 동료한테 무거운 파일을 전송해 주고 있습니다. 이것이 멀티프로세스 입니다. 그럼 스레드(멀티스레드)란 무엇일까요? 위에서 말한 하나의 프로세스에서 다시 여러 가지 일을 하는 것을 뜻 합니다. 예를 들어 파일을 전송하면서 채팅을 하고 있습니다. 동일한 채팅프로그램에서 파일전송과 채팅을 동시에 하고 있는 것 입니다. 파일전송 스레드 채팅프로그램 프로세스 채팅 스레드 JAVA는 기본적으로 멀티스레드를 지원 하고 있습니다. 스레드는 두 가지 형태로 존재 합니다. 하나는 객체 하나를 n개의 스레드가 공유 하는 방식 이고, 또 다른 하나는 객체 하나당 하나의 스레드가 존재하는 방식 입니다. 객체0 스레드0 스레드0 객체0 객체1 스레드1 스레드1 스레드2 스레드2 객체2

29-2. 멀티스레드 문법 Runnable 인터페이스 구현을 통한 Thread (29_2_ex1_thread) Thread 클래스를 상속 통한 Thread (29_2_ex2_thread)

29-2. 멀티스레드 문법 객체1개, 스레드n개 (29_2_ex3_thread)

29-2. 멀티스레드 문법 객체1개, 스레드1개 (29_2_ex4_thread)

29-2. 멀티스레드 문법 선거 개표 방송 예제(29_2_ex5_thread)

객체0 29-3. synchronized 스레드0 스레드1 스레드2 위에서 살펴본 봐와 같이 JAVA 멀티스레에서 하나의 객체에 n개의 스레드가 진행될 경우가 있습니다. 이런 경우 문제가 생길 수 있습니다. 객체에 선언되어 있는 인스턴스변수를 스레드에서 공유 하게 되어, 인스턴스의 값에 영향을 미치게 됩니다. 이런 경우를 대비해서 JAVA에서는 synchronized라는 키워드를 이용합니다. Synchronized는 먼저 수행되는 스레드의 모든 작업이 끝날 때까지 다른 스레드는 기다려야 하는 방식 입니다. 쉽게 식당 예를 들어 보겠습니다. 점심 시간에 식당에 가면 사람이 많아 비어있는 테이블이 없을 수 있습니다. 그런 경우 우리는 식당 문 앞에서 기다리다가 먼저 온 순서대로 빈자리에 앉습니다. 만약 다른 사람이 식사하고 있는 테이블에 같이 앉아서 식사를 한다면, 반찬도 공유되고, 밥도 공유되어 엉망이 되어 버릴 것입니다. 스레드도 마찬가지라고 생각 하시면 됩니다. (29_3_ex1_thread) 스레드0 객체0 스레드1 스레드2