<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    把困難踩在腳下

    迎難而上

     

    模擬生產零件系統程序

    要求:機器生產零件,工人取走零件,機器先生產一個1號零件,工人取走一個1號零件,機器再生產一個2號零件,工人再取走,然后機器生產一個1號零件,工人取走,機器再生產一個2號零件,工人取走,就這樣依次交替。在機器生產零件的時候,工人禁止取零件;在工人取零件的時候,機器禁止生產零件。

    生產狀態(tài)圖如下:

    1

    程序代碼如下:

     

    package com.dr.runnable3;
    //零件類
    class LingJian
    {
        
    private int num=1;
        
    private String name="車輪";
        
    /*
         * falg=true;表示機器正在生產零件,否則表示工人正在取零件
         
    */

        
    private boolean flag=true;
        
    public int getNum() {
            
    return num;
        }

        
    public void setNum(int num) {
            
    this.num = num;
        }

        
    public String getName() {
            
    return name;
        }

        
    public void setName(String name) {
            
    this.name = name;
        }

        
    public synchronized void set(int num,String name)
        
    {
            
    if(!flag)
            
    {
                
    try {
                    
    //工人在取零件,機器暫停工作
                    wait();
                    System.out.println(
    "工人正在取零件,等會在生產");
                    Thread.sleep(
    1000);
                }
     catch (InterruptedException e) {
                    e.printStackTrace();
                }

            }

            
    //機器生產零件
            this.setNum(num);
            
    this.setName(name);
            
    //修改標志位,使工人開始工作
            flag=false;
            
    //喚醒等待的線程
            notify();
        }

        
    public synchronized void get()
        
    {
            
    if(flag)
            
    {
                
    try {
                    
    //flag=true;機器正在生產零件,工人先休息會
                    System.out.println("機器正在生產零件,請稍等");
                    wait();
                    Thread.sleep(
    1000);
                }
     catch (InterruptedException e) {
                    e.printStackTrace();
                }

            }

            
    //工人取零件,機器休息
            System.out.println("零件號: "+this.getNum()+"--->零件名稱: "+this.getName());
            
    //修改標志位,使機器開始工作
            flag=true;
            
    //喚醒等待的線程
            notify();
        }

    }
     

    //生產零件
    class Produce implements Runnable//機器
    {
        
    private LingJian lj=null;
        
    public Produce(LingJian lj)
        
    {
            
    this.lj=lj;
        }

        
    public void run()
        
    {
            
    int i=0;
            
    while(true)
            
    {
                
    if(i==0)
                
    {
                    lj.set(
    1,"車輪");
                    i
    =1;
                }

                
    if(i==1)
                
    {
                    lj.set(
    2,"車軸");
                    i
    =0;
                }

            }

        }

    }
     

    //工人取零件
    class Consume implements Runnable//工人
    {
        
    private LingJian lj=null;
        
    public Consume(LingJian lj)
        
    {
            
    this.lj=lj;
        }

        
    public void run()
        
    {
            
    while(true)
            
    {
                lj.get();
            }

        }

    }
     

    //測試類
    public class LingJianDemo {
        
    public static void main(String args[])
        
    {
            
    //構建一個零件實例對象
            LingJian lj=new LingJian();
            Produce pro
    =new Produce(lj);
            Consume cse
    =new Consume(lj);
            
    new Thread(cse).start();
            
    new Thread(pro).start();
        }
     

    }
     

    此程序的輸出結果如圖:

    2

    這個程序涉及到并發(fā)多線程,多個線程共享一個資源,如果每個線程在同一時間同時修改這個資源那么勢必會造成資源信息的不正確,為了防止這種情況發(fā)生,我們在此程序中定義了兩個同步方法來給這個資源加上一把鎖,在一個時間點上只能有一個線程使用這個資源,其他線程等待。

    posted on 2010-11-09 11:51 馮魁 閱讀(219) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網站導航:
     

    導航

    統計

    公告

    快樂每一天!

    Everything is an object!

    常用鏈接

    留言簿(2)

    隨筆檔案

    學習網站

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品国产免费| 黄页免费在线观看| 亚洲第一页中文字幕| 91亚洲自偷在线观看国产馆| 午夜网站在线观看免费完整高清观看 | 18禁无遮挡无码网站免费| 国产成人aaa在线视频免费观看| 99久久婷婷国产综合亚洲| 免费人成再在线观看网站| 国产亚洲精品免费| 特黄aa级毛片免费视频播放| 午夜无码A级毛片免费视频| 亚洲AV乱码久久精品蜜桃| 亚洲av日韩av永久无码电影| 日本久久久免费高清| 亚洲国产精品自在线一区二区| 免费观看久久精彩视频| 久久久久亚洲av无码专区导航 | 国产亚洲精品高清在线| 9久热这里只有精品免费| 亚洲妇熟XXXX妇色黄| 69视频在线观看高清免费| 亚洲中文字幕久在线| a级男女仿爱免费视频| 四虎影视免费永久在线观看| 高清免费久久午夜精品 | 日韩a级毛片免费视频| 一区二区三区免费电影| 亚洲国产成人一区二区精品区 | 中文字幕在线亚洲精品| 亚洲av第一网站久章草| 亚洲国产黄在线观看| 成全高清在线观看免费| 久久亚洲国产成人影院网站| 免费一级毛片无毒不卡| 亚洲人成网男女大片在线播放 | 韩国欧洲一级毛片免费| 亚洲欧洲日产国码二区首页| 一个人免费视频在线观看www| 亚洲国产av高清无码| 亚洲国产成人a精品不卡在线|