当前位置: 首页 > 面试题库 >

请问当一个线程进入一个对象的synchronized方法A之后,其它线程是否可进入此对象的synchronized方法B?

钱经业
2023-03-14
本文向大家介绍请问当一个线程进入一个对象的synchronized方法A之后,其它线程是否可进入此对象的synchronized方法B?相关面试题,主要包含被问及请问当一个线程进入一个对象的synchronized方法A之后,其它线程是否可进入此对象的synchronized方法B?时的应答技巧和注意事项,需要的朋友参考一下

考察点:线程

不能。其它线程只能访问该对象的非同步方法,同步方法则不能进入。因为非静态方法上的synchronized修饰符要求执行方法时要获得对象的锁,如果已经进入A方法说明对象锁已经被取走,那么试图进入B方法的线程就只能在等锁池(注意不是等待池哦)中等待对象的锁。 考察点:线程

参考回答:

①sleep()方法给其他线程运行机会时不考虑线程的优先级,因此会给低优先级的线程以运行的机会;yield()方法只会给相同优先级或更高优先级的线程以运行的机会;

② 线程执行sleep()方法后转入阻塞(blocked)状态,而执行yield()方法后转入就绪(ready)状态;

 类似资料:
  • 如果我没有错的话,Thread-1和thread-3正在进入synchronized方法,因为它有两个不同的目标对象。但是为什么线程2进入同步块呢? 请帮助我理解这一点。提前谢了。

  • 本文向大家介绍java多线程编程之Synchronized块同步方法,包括了java多线程编程之Synchronized块同步方法的使用技巧和注意事项,需要的朋友参考一下 文章分享了4个例子对synchronized的详细解释 1、是否加synchronized关键字的不同 加了synchronized关键字的输出结果如下 会先输出一组0-4,接着再输出下一组,两个线程顺序执行 excute:0

  • 问题内容: 我有多个正在运行的线程,这些线程访问单例对象并调用其方法并在其中传递对象。在该方法中,我仅对接收到的对象进行一些计算。我听说在这种情况下不会有任何问题,因为它是无状态的并且对所有人都是免费的。 我的问题是,它对所有人免费吗?我想知道多个线程如何在自己的线程中调用共享方法而不覆盖其他线程的传递对象吗?请在内存分配方面和堆栈级别进行解释。 问题答案: 我认为您必须区分已经存储在内存和代码执

  • 本文向大家介绍写一个方法对对象中的key进行排序相关面试题,主要包含被问及写一个方法对对象中的key进行排序时的应答技巧和注意事项,需要的朋友参考一下

  • 本文向大家介绍c#进程之间对象传递方法,包括了c#进程之间对象传递方法的使用技巧和注意事项,需要的朋友参考一下 1. 起源 KV项目下载底层重构升级决定采用独立进程进行Media下载处理,以能做到模块复用之目的,因此涉及到了独立进程间的数据传递问题。 目前进程间数据传递,多用WM_COPYDATA、共享dll、内存映射、Remoting等方式。相对来说,WM_COPYDATA方式更为简便,网上更到

  • 本文向大家介绍python进阶之多线程对同一个全局变量的处理方法,包括了python进阶之多线程对同一个全局变量的处理方法的使用技巧和注意事项,需要的朋友参考一下 通常情况下: 输出结果: #由于多线程不像多进程一样,每一个进程都一个独立的资源块,线程之间是共享主线程的一个资源块(虽然这样说不合适) #这样虽然方便了线程之间的数据传递,但是又会由于线程之间执行顺序的不确定,导致最后的结果不是应该输