当Thread.sleep(10000)被调用时当前线程将进入休眠状态。 如果在同步方法中调用Thread.sleep(10000),那么其他线程是否可以在该期间执行?Thread.sleep()在java中同步
3
A
回答
15
如果你在同步方法或块内做Thread.sleep(10000)
你不要释放锁。因此,如果其他线程正在等待该锁,它们将无法执行。
如果你想等待指定的时间量的情况发生,并释放你需要使用Object.wait(long)
0
private synchronized void deduct()
{
System.out.println(Thread.currentThread().getName()+ " Before Deduction "+balance);
if(Thread.currentThread().getName().equals("First") && balance>=50)
{
System.out.println(Thread.currentThread().getName()+ " Have Sufficent balance will sleep now "+balance);
try
{
Thread.currentThread().sleep(100);
}
catch(Exception e)
{
System.out.println("ThreadInterrupted");
}
balance = balance - 50;
}
else if(Thread.currentThread().getName().equals("Second") && balance>=100)
{
balance = balance - 100;
}
System.out.println(Thread.currentThread().getName()+ " After Deduction "+balance);
System.out.println(Thread.currentThread().getName()+ " "+balance);
}
我做出同步此方法的对象的锁,我运行两个单独的线程这正在同时运行&执行此方法产生不想要的结果! 如果我评论try catch块它会运行良好,所以是同步块的使用是有限的,直到米不使用这些尝试catch块
相关问题
- 1. 同步方法vs Thread.Sleep()
- 2. 同步在Java中
- 3. 异步Thread.sleep()方法
- 4. 在Firebase中同步verifyIdToken java
- 5. 在java中同步线程
- 6. 在Java线程中同步
- 7. Java Thread.sleep异常
- 8. 同步和java中的同步块
- 9. for循环中的Java Thread.sleep()
- 10. Java中的Thread.Sleep替代
- 11. 在异步方法内调用Thread.sleep()
- 12. 有没有在Java中的Thread.Sleep
- 13. Java Thread.sleep long或int?
- 14. Java Swing Animation without Thread.sleep
- 15. Java多线程thread.sleep()
- 16. java同步
- 17. Java同步块
- 18. Java同步
- 19. JAVA同步
- 20. Java同步
- 21. 同步块 - Java
- 22. Java同步器
- 23. Java同步锁
- 24. java中的时间同步
- 25. java中的线程/同步
- 26. java中的方法同步
- 27. java中的同步帮助
- 28. 线程同步问题(在java中)
- 29. Java同步和在textpane中写入
- 30. 在Java中声明同步的顺序