Main.java revision 5d1ac920fdaef5d4ec8f66bb734488cd9660b024
15d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao// Copyright 2007 The Android Open Source Project
25d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
35d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao/**
45d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Make sure that a sub-thread can join the main thread.
55d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao */
65d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaopublic class Main {
75d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public static void main(String[] args) {
85d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Thread t;
95d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
105d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        t = new Thread(new JoinMainSub(Thread.currentThread()), "Joiner");
115d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.print("Starting thread '" + t.getName() + "'\n");
125d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        t.start();
135d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
145d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        try { Thread.sleep(1000); }
155d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        catch (InterruptedException ie) {}
165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
175d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.print("JoinMain starter returning\n");
185d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
195d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao}
205d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoclass JoinMainSub implements Runnable {
225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    private Thread mJoinMe;
235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public JoinMainSub(Thread joinMe) {
255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        mJoinMe = joinMe;
265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
285d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public void run() {
295d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.print("@ JoinMainSub running\n");
305d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
315d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        try {
325d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            mJoinMe.join();
335d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            System.out.print("@ JoinMainSub successfully joined main\n");
345d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        } catch (InterruptedException ie) {
355d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            System.out.print("@ JoinMainSub interrupted!\n");
365d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        }
375d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        finally {
385d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            System.out.print("@ JoinMainSub bailing\n");
395d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        }
405d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
415d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao}
42