肯定不行了!比如说
class a
{
   public void aaa()
{
    synchronized(this)
{
   .......
}
}
}在上述的.....执行过程中,对象是不能被其他线程访问的!当然有一点除外,如果.....那里面有wait()语句,那么其他的线程可以进入。

解决方案 »

  1.   

    呵呵,这种问题,你子可以运行一个例子,你就知道具体怎么养了!又的时候,想象的跟实际的有点区别!其实java里面,只有互斥,没有同步,如果你向同步,那么你就需要利用互斥来实现。
      

  2.   

    这个问题,其实是java程序员面试32问中的一个题目,在cndn.的java频道有的,当时我认为是可以的,我也看了java编程思想上的说法,上面说,当有线程,调用了任何synchronized的函数时,对象便被锁定,该对象的所有synchronized函数便无法再被调用,
    但现问题是,可否进入"此对象的其它方法",能还是不能
      

  3.   

    进入synchronized方法并不需要取得对象的monitor。
    可以看一下这个例子。
    public class syn extends Thread
    {
    int mode;
    boolean exitflag;
    public static void main(String arg[])
    {
    syn syn1 = new syn();
    syn1.start();
    try
    {
    sleep(10000);
    }catch(Exception e)
    {
    }
    Thread t1 = new Thread(syn1);
    syn1.mode = 2;
    t1.start();
    }
    public syn()
    {
    mode = 1;
    exitflag = false;
    }
    public void run()
    {
    if(mode == 1)
    {
    dosyn();
    }else if(mode == 2)
    {
    doexit();
    }
    }
    public synchronized void dosyn()
    {
    while(!exitflag)
    {
    System.out.println("in synchronized method");
    try
    {
    sleep(1000);
    }catch(Exception e)
    {
    }
    }
    }
    public void doexit()
    {
    System.out.println("set exit flag");
    exitflag = true;
    }
    }
      

  4.   

    sorry,刚才笔误,应该是“进入非synchronized方法并不需要取得对象的monitor”
      

  5.   

    呵呵,我对楼主的问题理解是错误地!我在解释Only one thread at a time can own an object's monitor这个的意思!哈哈!
      

  6.   

    treeroot(旗鲁特),强!
    哈哈!
      

  7.   

    >>当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
    能还是不能,为什么,请注意"此对象的其它方法"给你一个标准答案,确切的说应该是如果“其他方法”也是synchronized的(也就是说这个方法也需要调用线程获得锁),那么这个“其他方法”将会等待当前线程访问的synchronized方法结束,他才能被调用如果“其他方法”不是synchronized的(也就是说这个方法不需要调用线程获得锁),那么这个“其他方法”将会直接被另一个线程调用
      

  8.   

    那这篇文章:http://dev.csdn.net/develop/article/63/63789.shtm的第二十六题的答案是错误的歪,
      

  9.   

    嗯, DanielYWoo(绿色毒汁)说的答案很标准
      

  10.   

    另外大家不要把synchronized程序段和synchronized方法搞混淆啊