当前位置: 首页 > 知识库问答 >
问题:

线程同步

齐典
2023-03-14

下面的代码创建了一个新的custom um < code > Thread ,并等待线程结束,直到主线程再次激活。

> < li >我不太明白它是如何工作的。为什么< code > myth read . wait();立即接到电话? < li>

为什么不改用< code>Thread.join()?

公共静态void main(String[] args) {

    Thread mythread = new MyThread("hello");
    mythread.start();
    synchronized (mythread) {
        try {
            mythread.wait();
        } catch (InterruptedException e) {

        }
    }       
}

共有2个答案

喻子航
2023-03-14

它的工作方式是,当myThread终止时,它调用notifyAll()来唤醒您的myThead.wait()。查看java文档中引用其实现的Thread.join()方法。

查看Java同步正在执行退出时自动通知?这是预期的吗?

为什么不改用联接?我认为你应该这样做。您需要编写的代码更少。它实际上并不比您在此处实现的内容多得多,并且阅读您的代码的其他人可能更熟悉使用该调用来等待线程退出。

吉和同
2023-03-14

当线程完成运行时,它会在自身上调用 notifyAll()。这就是Thread.join()的实现方式:它在线程上等待。因此,由于主线程在线程上等待,因此一旦它完成运行,主线程就会收到通知,并且可以继续执行。

您违反了一个记录在案的规则:您永远不应该等待Thread对象。您还违反了另一个:etc()应始终在循环检查条件时调用。

 类似资料:
  • 所以我有一个代码: 所以我将线程添加到我的线程列表中,然后启动这些线程。这是MyThread类: 我想做一个程序来创建线程,将它们添加到列表中,调用它们,但是每个线程都应该等到前一个线程结束它的任务。因此输出应该如下所示: 如何使用实现这一点?我尝试了使用的不同方法,但失败了。

  • 互斥锁 条件变量 POSIX信号量

  • 问题内容: 我正在使用Android App,无法将View与硬件同步。让我解释。 1)我从线程1的run方法中基于数组A中存储的随机值(即随机睡眠)对Android的麦克风进行静音和取消静音。 2)我画出反映麦克风静音的蓝色脉冲。这是通过独立的View类完成的。 3)通过从倒数计时器的onTick内调用,我在上面视图中绘制的图形上移动了一条红线。 我以这种方式一个接一个地启动两个线程: 线程1.

  • 主要内容:1 什么是Java 线程同步,2 为什么使用Java线程同步,3 Java同步类型,4 Java线程同步的类型,5 线程互斥,6 Java锁的概念,7 线程并发问题引发数据不一致,8 Java synchronized方法的例子1,9 Java synchronized方法的例子21 什么是Java 线程同步 Java中的同步是控制多个线程对任何共享资源的访问的能力。 Java同步是更好的选择,我们希望只允许一个线程访问共享资源。 2 为什么使用Java线程同步 Java线程同步主要用

  • 我有3节课是这样的: 来源Java语言 任务Java语言 主要的Java语言 当类源的x等于4时,只有一个任务继续递增x,直到x等于8,我们恢复正常。结果如下: 要获得此结果,我需要修复什么?

  • 在多线程实时系统中,一项工作的完成往往可以通过多个线程协调的方式共同来完成,那么多个线程之间如何 “默契” 协作才能使这项工作无差错执行?下面举个例子说明。 例如一项工作中的两个线程:一个线程从传感器中接收数据并且将数据写到共享内存中,同时另一个线程周期性的从共享内存中读取数据并发送去显示,下图描述了两个线程间的数据传递: 如果对共享内存的访问不是排他性的,那么各个线程间可能同时访问它,这将引起数