4、线程同步通信

来源:互联网 发布:openwrt cgi c语言 编辑:程序博客网 时间:2024/05/17 04:58

子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50,请写出程序。

package cn.itcast.thread;public class TraditionalComuication {    public static void main(String[] args) {        // TODO Auto-generated method stub        new Thread(                new Runnable() {                    @Override                    public void run() {                        // TODO Auto-generated method stub                        for(int i=1;i<=50;i++)                        {                            synchronized (Traditionthread.class) {                        for(int j=1;j<=10;j++)                        {                            System.out.println("sub thread sequece of"+i);                        }                        }}                    }                }).start();        new Thread(new Runnable() {            @Override            public void run() {                // TODO Auto-generated method stub                for(int i=1;i<=50;i++)                {                    synchronized (Traditionthread.class) {                for(int j=1;j<=10;j++)                {                    System.out.println("main thread sequece of"+i);                }                }                }            }        }).start();    }}

使用如下的方法,将方法封装

package cn.itcast.thread;public class TraditionalComuication {    public static void main(String[] args) {        // TODO Auto-generated method stub       final Business business=new Business();        new Thread(                new Runnable() {                    @Override                    public void run() {                        // TODO Auto-generated method stub                        for(int i=1;i<=50;i++)                        {                            business.sub(i);                    }                    }                }).start();        new Thread(new Runnable() {            @Override            public void run() {                // TODO Auto-generated method stub                for(int i=1;i<=50;i++)                {                  business.main(i);                }            }        }).start();}}class  Business{    private boolean bshoildsub=true;     public synchronized void sub(int i)    {        if(!bshoildsub)        {            try {                this.wait();            } catch (InterruptedException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }    for(int j=1;j<=10;j++)    {        System.out.println("sub thread sequece of"+j+",loop of "+i);    }    bshoildsub=false;    this.notify();//    }    public synchronized void main(int i)    {        if(bshoildsub)        {            try {                this.wait();            } catch (InterruptedException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }        for(int j=1;j<=100;j++)        {            System.out.println("main thread sequece of"+j+",loop of "+i);        }           bshoildsub=true;        this.notify();//唤醒    }}
原创粉丝点击