首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2012-12-18 
同步块与同步方法区别示例代码示例:public class SyncTest{static Object obj new Object()public stat

同步块与同步方法区别示例
代码示例:

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
结论:
同步方法将当前对象做为同步锁,同步锁生效后该对象内所有的同步方法都不可被调用。

热点排行