zoukankan      html  css  js  c++  java
  • Java中的wait方法 简单介绍。

    一 wait方法怎么用?

    package com.aaa.threaddemo;
    /*
     * 多线程中的wait方法?    
        public final void wait() throws InterruptedException {
            wait(0);
        }
        
      1  隶属于object,因为Java希望把并发控制做到每一个Object里 
      2  调用wait方法,线程会放弃对象锁,进入等待此对象的等待对象池。
      3  只有针对此对象调用notify方法后,本线程才进入对象锁定池,准备获取对象锁,进行运行状态。否则就是一直挂起状态。
        
        
     * 
     * 
     */
    public class WaitDemo {
        public static void main(String[] args) throws InterruptedException {
            
            // 新建两个线程 测试wait方法。
            new Thread(new Runnable() {
                public void run() {
                    // 4.synchronized后面括号里是类,此时,线程获得的是对象锁.
                    synchronized (WaitDemo.class) {
                        try {
                            System.out.println("线程一开始");
                            
                            //wait 方法 线程会放弃对象锁,进入等待此对象的等待锁定池,此时线程挂起。
                            WaitDemo.class.wait();
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
                        System.out.println("线程一结束");
                    }
                    
                }
            }).start();
            
            new Thread(new Runnable() {
                public void run() {
                    synchronized (WaitDemo.class) {
                        System.out.println("线程二开始");
                        
                        //只有针对此对象调用notify方法后,本线程才进入对象锁定池,准备获取对象锁,进入运行状态。
                        //如果不调用这个方法,线程永远都是刮起的状态。
                        WaitDemo.class.notify();
                        System.out.println("线程二结束了");
                    }
                    
                }
            }).start();    
        }
    
    }

    二 测试notify的作用

    package com.aaa.threaddemo;
    /*
     * 多线程中的wait方法?    
        public final void wait() throws InterruptedException {
            wait(0);
        }
        
      1  隶属于object,因为Java希望把并发控制做到每一个Object里 
      2  调用wait方法,线程会放弃对象锁,进入等待此对象的等待对象池。
      3  只有针对此对象调用notify方法后,本线程才进入对象锁定池,准备获取对象锁,进行运行状态。否则就是一直挂起状态。
        
        
     * 
     * 
     */
    public class WaitDemo {
        public static void main(String[] args) throws InterruptedException {
            
            // 新建两个线程 测试wait方法。
            new Thread(new Runnable() {
                public void run() {
                    // 4.synchronized后面括号里是类,此时,线程获得的是对象锁.
                    synchronized (WaitDemo.class) {
                        try {
                            System.out.println("线程一开始");
                            
                            //wait 方法 线程会放弃对象锁,进入等待此对象的等待锁定池,此时线程挂起。 
                            WaitDemo.class.wait();
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
                        System.out.println("线程一结束");
                    }
                    
                }
            }).start();
            
            new Thread(new Runnable() {
                public void run() {
                    synchronized (WaitDemo.class) {
                        System.out.println("线程二开始");
                        
                        //只有针对此对象调用notify方法后,本线程才进入对象锁定池,准备获取对象锁,进入运行状态。
                        //如果不调用这个方法,线程永远都是刮起的状态。
    //                    WaitDemo.class.notify();
                        System.out.println("线程二结束了");
                    }
                    
                }
            }).start();    
        }
    
    }

  • 相关阅读:
    C#基于Socket的简单聊天室实践
    进程及进程间通信
    一次千万级别的SQL查询简单优化体验
    Attribute和Property
    解析Resources.arsc
    数据挖掘十大算法之决策树详解(2)
    数据挖掘十大算法之决策树详解(1)
    线性回归浅谈(Linear Regression)
    贝叶斯推断及其互联网应用(三):拼写检查
    贝叶斯推断及其互联网应用(二):过滤垃圾邮件
  • 原文地址:https://www.cnblogs.com/ZXF6/p/14087129.html
Copyright © 2011-2022 走看看