java筆記--關於Object類與線程相關的方法

來源:互聯網
上載者:User

標籤:style   blog   http   color   java   使用   os   io   

關於Object類中的線程方法

 

Object類是所有Java類的 父類,在該類中定義了三個與線程操作有關的方法,使得所有的Java類在建立之後就支援多線程

這三個方法是:notify(),notifyAll(),wait(),這幾個方法都是用來控制線程的運行狀態的。

 

方法列表如下
notify() : 喚醒在此對象監視器上等待的單個線程
notifyAll() : 喚醒在此對象監視器上等待的所有線程
wait() : 在其他線程時調用此對象的notify()或者notifyAll()方法前,導致當前線程等待
wait(long timeout) : 在notify()或者notifyAll()方法被調用之前或者超過指定的時間之前,導致當前線程等待
wait(long timeout,int nanos) : 在notify()或者notifyAll()方法被調用之前或者超過指定的時間之前,
                                或者其他線程中斷當前線程之前,導致當前線程等待。
--如果朋友您想轉載本文章請註明轉載地址"http://www.cnblogs.com/XHJT/p/3905372.html  "謝謝--                         
注意:  在Object類中,以上所有的方法都是final的,切記勿與Thread類混淆
        且這幾個方法要與Synchronized關鍵字一起使用,他們都是與對象監視器有關的,
        當前線程必須擁有此對象的監視器,否則會出現IllegalMonitorStateException異常。
       
代碼執行個體:

package com.xhj.thread;import java.util.Random;/** * Object類中與線程相關方法的應用 *  * @author XIEHEJUN *  */public class ObjectThreadMethod {    /**     * 定義商品最高件數     */    private int count = 10;    /**     * 生產時記錄倉庫商品件數     */    private int sum = 0;    private class Producter implements Runnable {        @Override        public void run() {            for (int i = 0; i < count; i++) {                int num = new Random().nextInt(255);                synchronized (this) {                    if (sum == count) {                        System.out.println("倉庫已滿");                        try {                            this.wait(1000);                        } catch (InterruptedException e) {                            // TODO Auto-generated catch block                            e.printStackTrace();                        }                    } else {                        System.out.println("生產商品" + num + "號");                        this.notify();                        sum++;                        System.out.println("倉庫還有商品" + sum + "件");                        try {                            Thread.sleep(100);                        } catch (InterruptedException e) {                            // TODO Auto-generated catch block                            e.printStackTrace();                        }                    }                }            }        }    }    private class Consomer implements Runnable {        @Override        public void run() {            for (int i = 0; i < count; i++) {                synchronized (this) {                    if (sum == 0) {                        System.out.println("倉庫已經為空白,請補貨");                        try {                            this.wait(1000);                        } catch (InterruptedException e) {                            // TODO Auto-generated catch block                            e.printStackTrace();                        }                    } else {                        System.out.println("消費著買去了一件商品");                        this.notify();                        sum--;                        System.out.println("倉庫還有商品" + sum + "件");                        try {                            Thread.sleep(100);                        } catch (InterruptedException e) {                            // TODO Auto-generated catch block                            e.printStackTrace();                        }                    }                }            }        }    }    /**     * 調用線程服務     */    public void service() {        Producter productor = new Producter();        Consomer consomer = new Consomer();        Thread thread1 = new Thread(productor);        Thread thread2 = new Thread(consomer);        thread1.start();        thread2.start();    }    public static void main(String[] args) {        // TODO Auto-generated method stub        ObjectThreadMethod ob = new ObjectThreadMethod();        ob.service();    }}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.