page contents
Nen
Nen - 程序员

性别: 天津 - 天津市 注册于 2021-06-23

向TA求助
2850金币数
43180 经验值
1个粉丝
主页被访问 6256 次

3096 个回答

0 赞同

sleep() 和 wait() 有什么区别?

来源的不同 sleep() 来自 Thread wait() 来自 Object。 释放锁 sleep() 不释放锁 wait() 释放锁。 用法不同 sleep() 时间到会自动恢复; wait() 可以使用 notify()/notifyAll()直接唤醒。 用途不同 wait 通常被用于线程间交互/通信 sleep 通常被用于暂停执行。

回答于 2022-04-11 13:53

0 赞同

notify()和 notifyAll()有什么区别?

notifyAll()会唤醒所有的线程,notify()之后唤醒一个线程。 notifyAll() 调用后,会将全部线程由等待池移到锁池,然后参与锁的竞争,竞争成功则继续执行,如果不成功则留在锁池等待锁被释放后再次参与竞争。而 notify()只会唤醒一个线程,具体唤醒哪一个线程由虚拟机控制。

回答于 2022-04-11 13:53

0 赞同

你是如何调用 wait() 方法的?使用 if 块还是循环?为什么?

处于等待状态的线程可能会收到错误警报和伪唤醒,如果不在循环中检查等待条件,程序就会在没有满足结束条件的情况下退出。 wait() 方法应该在循环调用,因为当线程获取到 CPU 开始执行的时候,其他条件可能还没有满足,所以在处理前,循环检测条件是否满足会更好。下面是一段标准的使用 wait 和 notify 方法的代码: sy...

回答于 2022-04-11 13:52

0 赞同

为什么线程通信的方法 wait(), notify()和 notifyAll()被定义在...

Java中,任何对象都可以作为锁,并且 wait(),notify()等方法用于等待对象的锁或者唤醒线程,在 Java 的线程中并没有可供任何对象使用的锁,所以任意对象调用方法一定定义在Object类中。 wait(), notify()和 notifyAll()这些方法在同步代码块中调用 有的人会说,既然是线程放弃对象锁,那也可以把wait()定义在Thread类里...

回答于 2022-04-11 13:52

0 赞同

为什么 wait(), notify()和 notifyAll()必须在同步方法或者同步...

当一个线程需要调用对象的 wait()方法的时候,这个线程必须拥有该对象的锁,接着它就会释放这个对象锁并进入等待状态直到其他线程调用这个对象上的 notify()方法。同样的,当一个线程需要调用对象的 notify()方法时,它会释放这个对象的锁,以便其他在等待的线程就可以得到这个对象锁。由于所有的这些方法都需要线程持有对...

回答于 2022-04-11 13:51

0 赞同

Thread 类中的 yield 方法有什么作用?

使当前线程从执行状态(运行状态)变为可执行态(就绪状态)。 当前线程到了就绪状态,那么接下来哪个线程会从就绪状态变成执行状态呢?可能是当前线程,也可能是其他线程,看系统的分配了。

回答于 2022-04-11 13:51

0 赞同

为什么 Thread 类的 sleep()和 yield ()方法是静态的?

Thread 类的 sleep()和 yield()方法将在当前正在执行的线程上运行。所以在其他处于等待状态的线程上调用这些方法是没有意义的。这就是为什么这些方法是静态的。它们可以在当前正在执行的线程中工作,并避免程序员错误的认为可以在其他非运行线程调用这些方法。

回答于 2022-04-11 13:51

0 赞同

线程的 sleep()方法和 yield()方法有什么区别?

优先级 sleep()方法给其他线程运行机会时不考虑线程的优先级,因此会给低优先级的线程以运行的机会; yield()方法只会给相同优先级或更高优先级的线程以运行的机会; 状态 线程执行 sleep()方法后转入阻塞(blocked)状态; 而执行 yield()方法后转入就绪(ready)状态; 异常 sleep()方法声明抛出 InterruptedExcep...

回答于 2022-04-11 13:51

0 赞同

Java 中 interrupted 和 isInterrupted 方法的区别?

interrupt:用于中断线程。调用该方法的线程的状态为将被置为”中断”状态。 注意:线程中断仅仅是置线程的中断状态位,不会停止线程。需要用户自己去监视线程的状态为并做处理。支持线程中断的方法(也就是线程中断后会抛出interruptedException 的方法)就是在监视线程的中断状态,一旦线程的中断状态被置为“中断状态”,就...

回答于 2022-04-11 13:50

0 赞同

如何通过Thread 类创建线程?

步骤 定义一个Thread类的子类,重写run方法,将相关逻辑实现,run()方法就是线程要执行的业务逻辑方法 创建自定义的线程子类对象 调用子类实例的star()方法来启动线程 public class MyThread extends Thread {     @Override     public void run() {         System.out.println(Thread.currentThread().getName()...

回答于 2022-04-09 15:54