未分類 10 5 月 2020 Java 里调用 notify()后,当前线程会立刻放弃继续执行吗(哪怕分配给当前线程的时间片没用完)? Java 里调用 notify()后,当前线程会立刻放弃继续执行吗(哪怕分配给当前线程的时间片没用完)? 資深大佬 : jiangwenjie 14 我印象中 notify 好像是唤醒等待线程用的,好像和放弃执行没有关系,而且时间片级别的操作大多依赖操作系统对线程调度的实现,不过如果线程进入等待的话理应可以立即放弃时间片的 大佬有話說 (8) 資深大佬 : pursuer @pursuer 你们工作中用多线程的地方多吗? 資深大佬 : yjxjn notify 是唤醒一个正在等待的线程。。当前线程为什么要放弃执行。。。我猜你想要 join ? 資深大佬 : guyeu 是在离开同步代码块之后,才会放弃执行。也就是 synchronized 结束或者 unlock() 之后。 資深大佬 : sudden 主是想说 yield() 吧 資深大佬 : lanterboy notify 和主说的好像关系不大,notify 会从等待队列中随机选取一个放入到同步队列中,notify 的时候不会放锁的,会继续执行,执行到 cpu 时间片用完被调度,直到退出同步 資深大佬 : 776491381 你不会把 java 当成 node js 那样单线程执行的吧? 資深大佬 : daozhihun @yjxjn #2 我工作不是用 Java 的,只是自己做的一些工具是用 Java,因为不能堵塞 UI 线程,涉及网络,文件等耗时操作都会用到多线程 資深大佬 : pursuer notify 用于唤醒睡眠等待状态的线程, 而且并不是马上执行的, 而是转换为可被调度状态, 等待 cpu 的调度. 调用 notify 的本线程该吃吃该喝喝