为什么线程不等待notify()
?线程启动,然后进入等待池,但是在那一刻之后它将继续执行。
public class JavaApplication2 {
public static void main(String [] args) {
ThreadB b = new ThreadB();
synchronized(b) {
b.start();
try {
System.out.println("1");
b.wait();
} catch (InterruptedException e) {}
System.out.println("Total is: " + b.total);
}
}
}
class ThreadB extends Thread {
int total;
@Override
public void run() {
synchronized(this) {
total += 1;
//notify();
}
}
}
您正在线程对象本身上进行同步,这是错误的用法。即将发生的事情是,即将死去的执行线程总是调用notify
其Thread
对象:Thread.join
依赖于this。因此,很清楚为什么notify
在其中有或没有自己的情况下都会得到相同的行为。
解决方案:使用单独的对象进行线程协调;这是标准做法。
在下面的代码中,为什么主线程要等到子线程完成。 Driver.java ThreadRunner.java 调用“t.start()”后,在驱动程序类中,程序是否应该退出?我没有使用join,但主线程仍在等待,直到新旋转的“ThreadRunner”运行开始。这是因为在java中,主线程(由main方法启动)总是等待所有线程关闭吗?
我正在学习Java 1.8中的CompletableFuture,在理解所有代码时遇到了困难。主线程似乎不会等待任何可完成的未来完成。 看见https://github.com/nurkiewicz/reactive/blob/master/src/test/java/be/more/reactive/S03_AllOf.java例如,我正在测试。 测试作业在打印任何结果之前完成。 有两种(丑陋的
尝试学习Async/await(以下代码),等待在2s后返回用户名。(返回一个promise)然后只记录接收到的用户名。 问题是then方法中的记录了。 不确定这里出了什么问题。很感谢解释一下这里到底发生了什么。 多谢了。
我正在努力学习如何正确使用async Wait,但我对它有点共同的想法。 在片段中,我试图构建一个对象数组,其中包含我需要的关于我在组件中上传的文件的信息。问题是this.fileInfo中的对象并没有完全等待返回编码图像的promise,而是在我console.logthis.fileInfo时返回此输出: 如您所见,关键图像是一个值未定义的ZoneAwarePromise。你能帮我修一下吗?
问题内容: 我正在为我的ubuntu服务器(针对我的多客户端匿名聊天程序)实现一种简单的线程池机制,并且需要使我的工作线程进入睡眠状态,直到需要执行一项工作(以函数指针和参数的形式) 。 我当前的系统即将关闭。我(工人线程正在)问经理是否有工作可用,以及是否有5毫秒没有睡眠。如果存在,请将作业添加到工作队列中并运行该函数。糟糕的循环浪费。 什么我 喜欢 做的是做一个简单的事件性的系统。我正在考虑有
问题内容: 我会明白为什么 需要新的线程;它适用于: 为什么我不能使用同一线程?一世: 将光标设置为WAIT(进入GUI队列) 做我的长任务…(它进入GUI队列,但我希望光标更改,即在队列中,它在此之前执行) 将光标重置为默认值(任务完成后) 那么,我的长任务不会进入MAIN队列吗?因为,如果它进入主队列,我希望它在我的WAIT游标首先插入队列之后执行。为什么会这样呢? 问题答案: 没有线程,您的