栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基础:线程通信

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基础:线程通信

线程通信 wait();

作用:阻塞线程,必须在同步代码块或同步方法中使用(synchronized())

notify();

作用:唤醒被wait()阻塞的线程,必须在同步代码块或同步方法中使用(synchronized())

notifyAll();

作用:唤醒所有被阻塞的线程,必须在同步代码块或同步方法中使用(synchronized())

package thread01;


public class ThreadTest01 {
    public static void main(String[] args) {
        MyThread01 m1 = new MyThread01();
        Thread t1 = new Thread(m1);
        Thread t2 = new Thread(m1);
        t1.setName("线程1");
        t2.setName("线程2");
        t1.start();
        t2.start();

    }
}
class MyThread01 implements Runnable{
    private int number=1;
    //Object obj = new Object();
    @Override
    public void run() {
        while(true) {

            //synchronized (obj)
        synchronized (this){
            //唤醒,
                this.notify();
                //obj.notify();
                if (number <= 100) {

                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    } finally {
                    }

                    System.out.println(Thread.currentThread().getName() + ":" + number);
                    number++;
                    //使线程运行到此阻塞
                    try {
                        this.wait();//会释放锁
                        //obj.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    } finally {
                    }

                }else {
                    break;
}}}}}
sleep()和wait()异同
  • 同:

一旦执行方法,线程都将进入阻塞状态

  • 异:

1.两个方法声明的位置不同;Thread类中声明sleep(),Object类中声明wait()

2.调用的要求的不同:sleep()可以在任何需要的场景下调用。wait()必须在同步代码块或同步方法中使用

3.关于是否调用同步监视器:如果两个方法都使用在同步代码块或同步方法中sleep()不会释放锁,wait()会释放锁

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008721.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号