您的位置:首页 > 编程语言 > Java开发

主线程先循环20次,接着子线程循环10次,如此周而复始50次

2013-11-26 10:29 330 查看
/**

 * 题:主线程先循环20次,接着子线程循环10次,如此周而复始50次

 * 线程wait,notify应用

 */

public class ZL {

    public static int total_loop_count = 50;//欲循环的总次数

    public static int curr_loop_count = 1;//当前已循环次数

    public static void main(String[] args) {

        Thread c = new CThread();

        c.setName("子子子子子线程");

        c.start();

    }

}

class PThread extends Thread {

    /*

     * 主线程循环20次

     */

    public void run() {

        synchronized (String.class) {

            for (int i = 1; i <= 20; i++) {

                System.out.println("第" + ZL.curr_loop_count + "轮," + Thread.currentThread().getName() + ":" + i);

                if (i == 20) {

                    String.class.notifyAll();

                }

            }

        }

    }

}

class CThread extends Thread {

    /*

     * 子线程循环10次

     */

    public void run() {

        synchronized (String.class) {

            Thread p = new PThread();

            p.setName("主线程");

            p.start();

            try {

                String.class.wait();

            } catch (InterruptedException e1) {

                // TODO Auto-generated catch block

                e1.printStackTrace();

            }

            for (int i = 1; i <= 10; i++) {

                System.out.println("第" + ZL.curr_loop_count + "轮," + Thread.currentThread().getName() + ":" + i);

                if(i==10){

                    ZL.curr_loop_count ++;

                    if(ZL.curr_loop_count > ZL.total_loop_count){

                        break;

                    }

                    Thread c = new CThread();

                    c.setName("子子子子子线程");

                    c.start();

                }

            }

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java thread notify wait
相关文章推荐