黑马程序员技术交流社区
标题:
来问大家一个问题,谢谢。
[打印本页]
作者:
余威宏
时间:
2013-5-27 19:05
标题:
来问大家一个问题,谢谢。
本帖最后由 余威宏 于 2013-5-30 08:08 编辑
当一个同步方法已经执行,线程能够调用对象上的非同步实例方法吗?
有点不是太清楚,请大家详解一下,最好能够举几个例子,能够看得明白点。
作者:
821728010
时间:
2013-5-27 19:15
问题中你提到了对象,你是用继承Thread的方法创建的线程,每一个线程对象都有自己的run函数,互不影响,何来的同步?
作者:
吴刚—heima
时间:
2013-5-28 17:04
本帖最后由 吴刚—heima 于 2013-5-28 17:07 编辑
我大致看了一下你的问题,虽然感觉问题好像提的有点模糊,你说的同步方法是不是指的是两个同步线程调用时产生的方法,比如说线程1和线程2同步,那么他们各自有自己的一个输出流方法,比如说线程1打印23线程2打印12,这样的同方法。
如果是这样的话,那我告诉你,在两个同步线程中同样能够调用其他非同步的对象方法:[code]
new Thread(new Runnable()
{
synchronized function1(this)
{
Thread.sleep(100);
System.out.println("13");
}
}
);
new Thread(new Runnable()
{
synchronized funciton2(this)
{
Thread.sleep(100);
System.out.println("23");
}
funciton3()
{
}
}
);
从上面的代码可以看出,如果你的监听代码是这样写的话,你的两个同步方法的调用,并不会影响到其他非同步方法的调用,如果你还有不懂的地方,可以再仔细考虑一下自己的代码,并且看一下张孝祥老师的多线程视频
作者:
袁梦希
时间:
2013-5-29 17:14
如果问题已经解决,请把帖子的类型改为已经解决,如果不会解决请看我的个性签名。
作者:
李润根
时间:
2013-5-29 17:36
不明白你表达的意思!
public class Test01
{
public static void main(String[] args)
{
new Thread(new Runnable()
{
@Override
public void run()
{
Test01.sayHello();
}
}).start();
}
public synchronized static void sayHello()
{
System.out.println("sayHello");
try
{
Thread.sleep(2000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
show();
}
public static void show()
{
System.out.println("show");
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2