• 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();    
        }
    
    }

  • 相关阅读:
    金庸的武侠世界和SAP的江湖
    如何处理用代码创建SD Sales order时遇到的错误消息KI 180
    如何利用BAPI SD_SALESDOCUMENT_CHANGE修改Sales Order的字段
    如何查找BAPI SD_SALESDOCUMENT_CHANGE里的字段对应的数据库存储表
    SAP标准培训课程C4C10学习笔记(四)第四单元
    C4C Product Price List的模型中和有效期相关的两个字段
    SAP成都研究院Sunshine: 我的C4C实习感受和保研之路
    SAP CRM和C4C的产品主数据price维护
    运行npm update等命令出错后如何分析问题根源
    ERP和C4C中的function location
  • 原文地址:https://www.cnblogs.com/ZXF6/p/14087129.html
Copyright © 2020-2023  润新知