同步块与同步方法区别示例

代码示例:

public class SyncTest
{
static Object obj = new Object();

public static void main(String[] args)
{

T1 t1 = new T1();
T2 t2 = new T2();
t1.start();
t2.start();
}

public static void test1()
{
synchronized(obj)
{
try
{
Thread.sleep(5000);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
System.err.println("====");
System.err.println("test1");
}
}

public static synchronized void test2()
{
System.err.println("****");
System.err.println("test2");
}

}

class T1 extends Thread
{
public void run()
{
SyncTest.test1();
}
}

class T2 extends Thread
{
public void run()
{
SyncTest.test2();
}
}

运行结果:
****
test2
等待5秒
====
test1
当使用同步方法时

public static synchronized void test1()
{
try
{
Thread.sleep(5000);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
System.err.println("====");
System.err.println("test1");
}

运行结果:
等待5秒
====
test1
****
test2
[b]结论:
同步方法将当前对象做为同步锁,同步锁生效后该对象内所有的同步方法都不可被调用。[/b]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值