java中传统的线程通信个人见解

java中传统的线程通信个人见解

ID:8959904

大小:18.01 KB

页数:2页

时间:2018-04-13

java中传统的线程通信个人见解_第1页
java中传统的线程通信个人见解_第2页
资源描述:

《java中传统的线程通信个人见解》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、才智尚招聘网Java中传统的线程通信个人见解有一个使用共同数据的经验:要用到共同数据(包括同步锁)的若干方法,要放到同一个类里。体现了程序的高内聚,也增强了程序的健壮性。还有一个经验,把同步代码或在和锁放到共同使用的数据上,而不是放在线程内,这样的好处是什么呢:首先是更符合面向对象的思想。其次是这种设计结构非常容易实现线程的同步,并且增加线程访问共同数据的时候不用每次都在线程内增加同步代码。有利于扩展和维护。首先看一个例子,子线程先循环10次,主线程再循环100次,接着子线程循环10次,主线程再循环100次,如此循环往复50次;实现代码如下:[java]1.public class T

2、raditionalThreadConnection {  2.  3.    /** 4.     * @param args 5.     */  6.    public static void main(String[] args) {  7.          8.        final Service service = new Service();  9.        //子线程   10.        new Thread(new Runnable(){  11.  12.            @Override  13.            public 

3、void run() {  14.                for(int i = 1;i<=50;i++){  15.                    service.subThread(i);  16.                }  17.            }  18.              19.        }).start();   20.        //主线程   21.        for(int i = 1;i<=50;i++){  22.            service.mainThread(i);  23.        }

4、  24.    }  25.      26.      27.}  28.class Service{  29.    /* 是否该子线程运行的标志 */  30.    private boolean isSub = true;  31.    public synchronized void subThread(int loop){  才智尚招聘网才智尚招聘网1.        //首先是判断是否该子线程运行,不是就等待   2.        while(!isSub){  3.            try {  4.                this.wait();

5、  5.            } catch (InterruptedException e) {  6.                e.printStackTrace();  7.            }  8.        }  9.        for(int i=1;i<=10;i++){  10.            System.out.println("sub-thread-" + i + ",loop--" + loop);  11.        }  12.        isSub = false;  13.        //子线程运行完之后叫醒主

6、线程   14.        this.notify();  15.    }  16.    public synchronized void mainThread(int loop){  17.        while(isSub){  18.            try {  19.                this.wait();  20.            } catch (InterruptedException e) {  21.                e.printStackTrace();  22.            }  23.     

7、   }  24.        for(int i=1;i<=100;i++){  25.            System.out.println("main-thread-" + i + ",loop--" + loop);  26.        }  27.        isSub = true;  28.        this.notify();  29.    }  30.}  还有一点要注意的地方,就在判断是否等待的地方为

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。