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

  • 相关阅读:
    进阶实验2-3.3 两个有序链表序列的交集 (20分)
    习题2.7 弹球距离 (15分)
    习题2.2 数组循环左移 (20分)
    习题2.1 简单计算器 (20分)
    习题2.5 两个有序链表序列的合并 (15分)
    习题2.4 递增的整数序列链表的插入 (15分)
    线性表和链表
    C. Boboniu and Bit Operations
    D
    C. Good Subarrays
  • 原文地址:https://www.cnblogs.com/ZXF6/p/14087129.html
Copyright © 2020-2023  润新知