Java Programming(51)
-
거꾸로 해도 같은지 검사하는 프로그램 (Java 버전)
public class Test { public static void checkReservedString(String string) { System.out.format("입력하신 문자열은 [%s] 입니다.\n", string); String temp = ""; for (int i = string.length() - 1; i >= 0; i--) temp += string.charAt(i); if (string.equals(temp)) System.out.println(true); else System.out.println(false); } public static void main(String[] args) { checkReservedString("123212"); } } 헉.. 자바로 하니까 왠지 엄청 ..
2008.04.29 -
후크 메소드 (Hook Method)
디자인 패턴 공부하는데.. 하나 빼먹은게 있었다. 템플릿 메소드 패턴을 배울때 나온 내용이었는데 제대로 안 짚고 넘어가서 과제할때 많은 애로사항을 주는 넘이 되었다... 그래서 -_- 공부도 잘 안하는데 후크 메소드가 뭔지 한번 알아 봤다. Head first, Design Patterns (오라일리) 책에는 후크에 대해서 이렇게 말하고 있다. 후크(Hook) 는 추상 클래스에 들어있는, 아무 일도 하지 않거나 기본 행동을 정의하는 메소드로, 서브 클래스에서 오버라이드 할 수 있습니다. 몬 개소리야 -_-;; 전혀 알아 먹을 수가 없다. 저중에 모르는 단어가 있는것도 아닌데 이 구절만 보면 무슨소린지 전혀 모르겠다. 오버라이드하는 메소드가 다 후크야?? 그럼 추상 메소드는 다 후크 메소드 인가?? 하는 ..
2007.11.21 -
Multi-Threading ⑤ Synchronization & DeadLock
병행성의 문제를 해결하기 위해서는 '동기화' 라는 키워드를 사용합니다. 쉽게 말하자면, 동기화를 한 메소드에는 한 스레드 객체만이 접근할 수 있도록 자물쇠와 열쇠를 놓습니다. 한 스레드가 메소드에 접근을 하고 열쇠를 가지고 자물쇠를 잠근후에 들어갑니다. 해당 스레드가 동기화된 메소드에서 나오기 전까지는 키가 반납되지 않으므로 이후에 도착한 스레드들은 먼저 들어간 스레드가 나올때 까지 기다립니다. 이와 같은 방식을 동기화 한다고 합니다. 메소드명 앞에 Synchronized 라는 키워드를 통해서 동기화를 시켜 줄수 있습니다. 따라서 지난 예제에서 말썽을 부리게 된 increase() 라는 메소드 앞에 synchronized 키워드를 사용하면 문제를 해결할 수 있습니다. public synchronized ..
2007.01.29 -
Multi-Threading ④ Concurrency Problem
앞서 말한 자바에서의 스레드의 특징중에, 잠재적인 문제 발생의 위험이 있다고 했었는데요, 첫째로 병행성의 문제에 대해서 알아보도록 하겠습니다 ^^ 병행성의 문제라는 것을 풀어서 이야기 하자면, 여러개의 스레드 객체가 한개의 리소스를 공유하기 때문에 발생하는 문제점이라는 겁니다! 일단 말로 이야기 하면 지루하기 때문에 소스코드를 보시면서 이야기 하겠습니다! public class ConcorrencyTrouble implements Runnable { private int total; public void run() { for (long i = 0; i < 10; i++) { increase(); System.out.println("total value is :" + total); } } public vo..
2007.01.29 -
Multi-Threading ③ Thread Objects
일단 멀티 스레드로 작업을 하기 위해서는 Runnable 이라는 인터페이스를 구현(implements)하거나 Thread 클래스를 상속(extends)받는 두가지의 방법이 있습니다. 다시 말하면, run() 이라는 메소드가 있어야 하기 때문인데, Thread 클래스는 Runnable을 구현하고 있기 때문에 결국은 Runnable 인터페이스를 구현하는 셈이 되는거죠. /* * Runnable 인터페이스를 구현하는 경우 */ public class HelloRunnable implements Runnable { public void run() { System.out.println("Hello from a thread!"); } public static void main(String args[]) { (new..
2007.01.29 -
Multi-Threading ② Features of Threads
자바에서의 스레드는 아래와 같은 특징이 있습니다. Share the process's resources Potentially problematic, communication - Concurrecy Problem - Too many synchronized - Deadlock Multithreaded execution is an essential feature of the Java platform 프로세스의 자원을 공유하고, 의사소통에서의 잠재적인 문제야기의 가능성이 있으며, 자바의 중요한 특징 중에 하나라는 점입니다. 첫째로, 프로세스의 자원을 공유한다는 말은, 프로세스 내부에 존재하는 스레드가 실행환경을 위해 모든 것을 갖추고 있는 프로세스의 자원을 사용하여 실행이 된다는 뜻이라는 것을 알 수 있습니다...
2007.01.29