java吧 关注:1,231,129贴子:12,695,536

求大神解答,synchronized 锁定的是调用方法的对象,

只看楼主收藏回复

synchronized 锁定的是调用方法的对象,那么下面的代码怎么还是并发执行了,B方法不应该是后执行吗求详细解答


来自Android客户端1楼2016-02-02 12:47回复


    来自Android客户端2楼2016-02-02 12:48
    回复


      来自Android客户端4楼2016-02-02 12:49
      回复
        这问题有意义么?锁住的是进入a方法的对象,几个线程去同时访问那个方法才行,先去弄明白多线程的基本知识吧


        IP属地:辽宁来自Android客户端6楼2016-02-02 12:52
        收起回复
          你这是多线程,线程1用a方法,线程2用b方法,


          IP属地:黑龙江来自iPhone客户端7楼2016-02-02 12:57
          收起回复
            你这下面的线程定义是做什么用的?


            IP属地:黑龙江来自iPhone客户端8楼2016-02-02 13:12
            回复
              楼主 你好 我是来回帖水经验的(⁄ ⁄•⁄ω⁄•⁄ ⁄) 不能因为我超可爱就欺负我哦!!


              IP属地:云南来自Android客户端9楼2016-02-02 13:14
              回复
                猪,这个是线程锁,锁住一个方法后,各个线程访问这个方法只能排队,第一个完了第二个才能进。因为系统所谓的并发就是将程序分成很多小块,在很短的时间内执行一小块,如果同样访问一个方法有可能这个访问进行了半截执行了另一个访问的。导致数据没有更改,执行出错误的结果。


                10楼2016-02-02 13:18
                收起回复
                  不清楚你是什么问题,方法b什么时候都可以被访问,。。。但是我还是不知道你想问什么。。


                  来自Android客户端11楼2016-02-02 18:09
                  收起回复
                    a把和b都加上锁和static,这时候你调用a的时候其他线程不能调用b


                    IP属地:河北来自iPhone客户端14楼2016-02-03 08:39
                    回复
                      同步关键字的意思就是,当进入这个方法的时候,会申请分配这个对象的锁。当锁被其他线程占有时,后面的线程都需要阻塞,等待这个锁释放。所以你的代码很好解释,线程1进入a时申请了锁,但线程2进入b时并没有同步关键字,于是不需要申请对象的锁,所以不会出现阻塞


                      IP属地:江苏15楼2016-02-03 09:05
                      回复