본문 바로가기

Runable

[Java Design Patten] Worker Thread 패턴 Worker Thread 패턴에서는 Worker thread가 일을 하니씩 가지러 가고, 또 처리합니다. 일이 없으면 Worker thread는 새로운 일이 올때까지 대기합니다. Client 역할업무를 작성하여 Channel역할에게 일을 전 달 public class ClientThread extends Thread {private final Channel channel;private static final Random random = new Random();public ClientThread (final String name, final Channel channel) {super(name);this.channel = channel;} public void run () {try {for (int i=0;.. 더보기
[Java Design Patten] Read-Write Lock 패턴 여러개의 쓰레드가 동시에 읽는 것은 문제가 없습니다. 하지만 읽는 중간에 쓰게 되면 문제가 발생하기에 이런 경우에 사용하면 효과적이다. 읽기 쓰기 Lock을 담당 public final class ReadWriterLock {private int readingReaders = 0;private int waitingWriters = 0;private int writingWriters = 0;private boolean preferWriter = true;public synchronized void readLock () throws InterruptedException {while (writingWriters > 0 || (preferWriter && waitingWriters > 0)) {wait();}r.. 더보기
[Java Design Patten] Single Threaded Execution Gate 클래스는 SharedResource 역할을 담당하고 있다. 그리고 자세히 보면 pass 에 Synchronized 키워드를 사용한 것을 주목하자 사용한 이유는 동시에 복수의 Thread가 접근하면 문제가 발생하기 때문이다. public class Gate {private int counter = 0;private String name = "Nobody";private String address = "NoWhere";public synchronized void pass (final String name, final String address) {this.counter++;this.name = name;this.address = address;check();}public String toString.. 더보기