java 线程同步执行问题

2025-04-13 00:20:20
推荐回答(2个)
回答1:

sleep和wait有一个共同作用,停止当前线程任务运行,但他们存在一定的不同:1、sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法2、wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用3、注意sleep()方法是一个静态方法,Thread.sleep()。也就是说他只对当前对象有效,通过t.sleep()让t对象进入sleep,这样的做法是错误的,它只会是使当前线程被sleep而不是t线程。wait属于Object的成员方法,一旦一个对象调用了wait方法,必须要采用notify()和notifyAll()方法唤醒该进程;如果线程拥有某个或某些对象的同步锁,那么在调用了wait()后,这个线程就会释放它持有的所有同步资源,而不限于这个被调用了wait()方法的对象。wait()方法也同样会在wait的过程中有可能被其他对象调用interrupt()方法而产InterruptedException,效果以及处理方式同sleep()方法

回答2:

同步执行不是一起执行的意思,只是相近而已,还是有先后的,时间间隔比较短而已,。