当一个线程进入一个对象的一个synchronized方法之后,其它线程是否可进入此对象的其它方法?请求高手给出解答,并附上测试的代码,非常感谢!

解决方案 »

  1.   

    当然可以了,即使是其它方法也是synchronized ,照样也可以
    当然如果是static的,那就会锁住
      

  2.   

    非static的synchronized方法 两个不同的对象可以同时操作 
    static的synchronized方法两个不同的对象不能同时操作
      

  3.   


    这个说的对啊。  其他线程不可以进入 该对象的synchronized 方法,
    可以以进入 非 synchronized 方法。
    synchronized  修饰static 相当于 把互斥锁加到了 类变量上而已。 
      

  4.   

    2 楼 3 楼 说的不对, synchronized 是在对象上加了一把互斥锁,只有当前线程可以访问该对象的synchronized 方法。
    DEMO 给你
    package com.meran.normalTest;import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.TimeUnit;public class CSDNDemo  {
    public   synchronized void step() throws InterruptedException{
    TimeUnit.SECONDS.sleep(4);
    System.out.println(Thread.currentThread()+"执行step 1");
    TimeUnit.SECONDS.sleep(4);

    }
    public synchronized void step2(){
    System.out.println(Thread.currentThread()+"执行step2");   
    }
    public static void main(String [] args) throws InterruptedException{
    CSDNDemo temp=new CSDNDemo();
         Thread t1=new Thread(temp.new A());
         t1.start();
         TimeUnit.SECONDS.sleep(1);
         Thread t2=new Thread(temp.new B());
         t2.start();
    }

    class A implements Runnable{
    public void run(){
    try {
    step();
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    }
    }
    class B implements Runnable{ @Override
    public void run() {
    step2();

    }

    }
    }
      

  5.   

    可以。synchronized关键字作用于方法之上,标明该方法是同步方法,那么在运行期,任何线程想要调用该方法,就需要获得该方法所属的对象的锁。一旦某个线程获得了该对象的锁,也就是锁住了这个对象,那么其它想要访问该方法的线程由于得不到该对象的锁,只能等待。但是,该对象中没有加synchronized关键字的方法,在被调用的时候,不需要获得对象的锁,因此该对象被锁住也无所谓,照样可以被直接调用。
      

  6.   

    其它方法也是synchronized 真的可以吗?你不要坑爹啊!
      

  7.   

    其他对象不能访问该对象的synchronized的其他方法,可以访问没有synchronized的。2、3楼坑爹呢