Head First Java 第2版
頭とからだで覚えるJavaの基本
(オライリージャパン)
Kathy Sierra (著) Bert Bates (著) 島田 秋雄(監修)
神戸 博之 (監修) 高坂 一城 (監修) 夏目 大 (翻訳)
開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Java (プログラミング言語)
- javac (コンパイラ)
- java (application launcher)
Head First Java 第2版 ―頭とからだで覚えるJavaの基本(Kathy Sierra (著)、Bert Bates (著)、島田 秋雄 (監修)、神戸 博之 (監修)、高坂 一城 (監修)、夏目 大 (翻訳)、オライリージャパン)の15章(ネットワークとスレッド)、エクササイズ(プログラミグマグネット(p.524))を解いてみる。
エクササイズ(プログラミグマグネット(p.524))
コード(BBEdit, Emacs)
TestThreads.java
public class TestThreads { public static void main(String [] args) { ThreadOne t1 = new ThreadOne(); ThreadTwo t2 = new ThreadTwo(); Thread one = new Thread(t1); Thread two = new Thread(t2); one.start(); two.start(); } } class Accum { private static Accum a = new Accum(); private int counter = 0; private Accum() {} public static Accum getAccum() { return a; } public int getCount() { return counter; } public void updateCounter(int add) { counter += add; } } class ThreadOne implements Runnable { Accum a = Accum.getAccum(); public void run() { for (int x = 0; x < 98; ++x) { a.updateCounter(1000); try { Thread.sleep(50); } catch (InterruptedException ex) {} } System.out.println("one " + a.getCount()); } } class ThreadTwo implements Runnable { Accum a = Accum.getAccum(); public void run() { for (int x = 0; x < 99; ++x) { a.updateCounter(1); try { Thread.sleep(50); } catch (InterruptedException ex) {} } System.out.println("two " + a.getCount()); } }
入出力結果(Terminal)
$ javac TestThreads.java && java TestThreads one 98098 two 98098 $ java TestThreads one 98097 two 98097 $ java TestThreads one 98099 two 98099 $ java TestThreads one 98099 two 98099 $ java TestThreads one 96099 two 96099 $
まだ、Threadとsleep, for loop, System.out.printlnのタイミングがよく理解できてないかも。
0 コメント:
コメントを投稿