首页 > 其他分享 >wait和notify线程通信

wait和notify线程通信

时间:2022-10-24 02:55:05浏览次数:58  
标签:Thread 唤醒 线程 notify new 方法 wait

package A_ShangGuiGu.Thread.ThreadTest;

/**
* 线程通信的实例:两个线程交替打印1-100,一人一次
* 涉及到的方法:
* wait():调用wait()方法会使得调用该方法的线程进入阻塞状态。同时释放锁。
* notify():唤醒一个wait的线程,如果只有一个线程,则唤醒一个,如果有多个线程则唤醒优先级高的,如果优先级相同则随机唤醒。
* notifyAll():唤醒所有线程。
* 说明:
* 这三个方法必须使用到同步代码块或者同步方法中。
* 这三个方法的调用者必须是同步代码块或者同步方法的锁。也就是同步监视器synchronized (this)里的this
* 如果不一致会导致异常。
* 这三个方法是定义在java.lang.Object包下
*/
class Test01 implements Runnable{
private int a = 1;
@Override
public void run() {
while (true){
synchronized (this) {
this.notifyAll();
if (a<=100){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
System.out.println(Thread.currentThread().getName()+"打印数据:"+a);
a++;
try {
this.wait();//调用wait()方法会使得调用该方法的线程进入阻塞状态。同时释放锁。
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}else {
break;
}
}
}
}
}
public class CommunicationTest {//线程通信。

public static void main(String[] args) {
Test01 test01 = new Test01();
Thread t1 = new Thread(test01);
Thread t2 = new Thread(test01);
t1.setName("线程1");
t2.setName("线程2");
t1.start();
t2.start();
}

}

标签:Thread,唤醒,线程,notify,new,方法,wait
From: https://www.cnblogs.com/zhazhawei906/p/16820235.html

相关文章

  • 进程与线程的联系与区别
    进程 一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。   线程进......
  • 进程与线程的区别
    进程与线程的基本概念1、线程的基本概念概念:线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在......
  • 进程与线程的区别
    进程与线程的定义和简单比喻  首先简单介绍一下进程与线程的定义。进程 进程是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统......
  • 进程与线程的区别
    一、线程的基本概念线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但......
  • 查看进程使用的线程数量
    1、找到目标进程可以使用ps-ef命令,通过grep关键字来找到目标进程比如我想查看一个监控(prometheus)的进程,结果如下所示:红框内即为监控的进程号2、方法1:pstree命令pstree-p......
  • 进程和线程的区别
    1、进程:是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一个进程都有一个自己的地址空间,至少有5中基本状态,它们是初始态,执行态,等待状态,......
  • 进程与线程的区别
    进程一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。线程进程中的一个执行......
  • 线程与进程的区别
     进程是资源分配的基本单位,线程是调度的基本单位。这是一句名言,很好地概括了两者的区别。用一句话来概括就是:进程对应操作系统,线程对应CPU。我们常说的任务调度,其实通......
  • 线程和进程的区别
    进程:是指一个内存中运行的应用程序(已经在内存中运行的程序).一个进程都有一个独立的内存空间,一个电脑(手机)可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行......
  • 线程和进程的区别
    ①概念:1.进程:一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。 2.线程:......