• Stars
    star
    103
  • Rank 333,046 (Top 7 %)
  • Language
    Java
  • Created over 10 years ago
  • Updated about 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

java concurrency 예제 정리

Java concurrency 예제

예제 출처

장별 예제 정리 링크

3. java.lang.Thread 바로 알기

4. 동기화와 가시성

  • Sychronized
    • NonreentrantDeadlock.java : synchronized 키워드에 의한 lock은 재진입가능하다는 것을 보여줌
    • SyncDemo.java : synchronized로 선언된 Block이 동시에 실행되지 못함을 보여줌.
    • PingPong.java : static method의 syncronized 키워드의 동작방식을 보여줌.
  • 가시성 확보
    • StopThread.java(Broken) : static 변수이지만 가시성 확보가 안 되어서 한 스레드에서 write한 값이 다른 thread에서 안 보이는 현상을 보여줌.
    • StopThread.java(Fix1) : 가시성 문제를 synchronized 메소드를 이용해서 동기화 시켜서 해결
    • StopThread.java(Fix2) : 가시성 문제를 volatile 키워드를 이용해서 해결
    • Worker.java : 가시성 확보, 동기화를 모두 했음에도 Thread.join이 호출되면 예상치 못한 동작이 발생함을 보여줌

5. Java concurrent API

  • Executors
    • TimingThreadPool.java : ThreadPoolExecutor를 확장해서 시간측정 로깅 기능을 추가한 예제
  • Callable
    • Preloader.java : Callable, FutureTask , Thread 생성, Future.get의 사용예.
  • java.util.concurrent.locks패키지
  • CountDownLatch
    • TestHarness.java : CountDownLatch를 이용해서 여러 쓰레드로 작업을 실행하고, 최종 종료시간을 구함
    • ConcurrentTimer.java : TestHarness와 유사한 역할이나 스레드 생성 후에 실행되는 구간을 측정하기 위해 단계를 하나 더 두었음.
  • Semaphore
  • 다양한 동기화 방식

6. Thread 안전 클래스

  • Iterator

  • BlockingQueue

  • Atomic class

  • 설계 원칙

    • StackDemo.java : 쓰레드에 한정되어야할 객체를 콜스택 안에서 local변수로 생성하여 메소드 파라미터로 넘김.
    • ThreadLocalDemo.java : ThreadLocal을 이용.

7. Documentation

  • JCIP annotation
    • Memo.java : @Immutable로 선언했을 때 Findbugs를 경고를 보여줌
    • LoginInfo.java : Thread-safe하지 않은 클래스
    • UserService.java : Thread-safe하지 않은 클래스를 멤버변수로 사용하는 코드

8. 성능


참고 자료

  • Effective Java 2nd Edition - Chaptor 10
  • Java concurrency in practice
  • Java로 배우는 디자인 패턴 입문 멀티쓰레드편
  • Thinking in java 4th edition - 17장 컨테이너 깊이 들어야보기, 21장 동시성
  • Agile java - Lesson 13 Multithreading
  • 프로그래밍 면접, 이렇게 준비한다. - Ch8 동시성

More Repositories

1

entity-dev

Shell
112
star
2

spring-jdbc-tips

Spring JDBC 활용팁, SQL 관리 방안 등
Java
112
star
3

multiline

An implementation of multiline string literals in Java, using Javadoc comments. This project is originated from the blog post of Adrian Walker ( http://www.adrianwalker.org/2011/12/java-multiline-string.html ).
Java
104
star
4

devnote

정상혁의 개발수첩
47
star
5

h2demo

HTTP/2 데모
Shell
32
star
6

one-ftpserver

Simple, portable FTP server for one user by one executable jar file.
Java
31
star
7

lambda-resort

examples of filtering, sorting, mapping by Java, Groovy, Scala, Kotlin, Xtend, Ceylon
Java
25
star
8

egloos-migration

egloos 블로그 마이그레이션 프로그램
Kotlin
12
star
9

bookshelf-it

https://bookshelf-it.benelog.net 에 배포되는 IT서적 책장
Shell
9
star
10

spring-upgrade-seminar

Helloworld 오픈세미나 발표자료
8
star
11

devcenter-bot

2019 NAVER CAMPUS HACKDAY WINTER 과제 저장소 ( https://d2.naver.com/news/4972264)
Java
6
star
12

docs

Documentations
HTML
5
star
13

contents-proxy

Java
4
star
14

spring-batch-examples

Java
4
star
15

java-date-time

Sample codes for java.util.Calendar, Date, joda-time, JSR-310
Java
4
star
16

web-db-console

A JDBC client with web interface by Maven-exec-plugin and H2 console.
4
star
17

shell-proxy

proxy server to execute shell commands
Java
4
star
18

uploader

Simple web application for uploading files
Java
3
star
19

wiki

잡다한 지식 정리
3
star
20

dumper

Simple web application to download java stack dump
Java
2
star
21

diary

https://diary.benelog.net 에 배포되는 소스
Shell
1
star
22

tomcat-bed

packaging of an embeded Tomcat server for UI tests.
1
star
23

yonsei-stats-bk

JavaScript
1
star
24

string-replace-test

Java
1
star