/* * 練習問題14.2 p.300 * 最初のバージョンのPrintServerを修正して、本文で述べたように、スレッドの識別により * コンストラクタで生成されたスレッドだけがrunを実行できるようにしなさい。 */ package ch14.ex14_02; import java.awt.PrintJob; public class PrintServer implements Runnable { private final PrintQueue requests = new PrintQueue(); private String threadName = Thread.currentThread().getName(); public PrintServer() { Thread tmp = new Thread(this); threadName = tmp.getName(); tmp.start(); } public void print(PrintJob job) { requests.add(job); } public void run() { if (Thread.currentThread().getName().equals(threadName)) { for (int i = 0; i < 3; i++) realPrint(); // realPrint(requests.remove()); } else { System.out.println("Thread is incorrect"); System.out.println("Expected thread name is: " + threadName); System.out.println("Current thread name is: " + Thread.currentThread().getName()); } } /* * private void realPrint(PrintJob job) { // 印刷の実際の処理を行う } */ private void realPrint() { // テスト実施のための偽物のrealPrintメソッド System.out.println("realPrint"); } public static void main(String[] args) { PrintServer test = new PrintServer(); test.run(); } }