您的位置:首页 > 数据库 > Oracle

java+oracle+web(第八天) java 基础课程(一) 线程同步和死锁

2015-05-23 18:00 387 查看

synchronized

synchronized同步代码块

同步函数

两种方式。

/*

死锁,共享资源自有自己的锁,然后相互访问都要解锁,

如果相互拿不到对方的锁,可能产生死锁

synchronized

例子说明:

两个锁中锁,

A和B,然后A有资源,然后B锁在A中锁了一个资源。

然后两个线程来访问。

引起死锁。在开发中要避免死锁。

*/

classLockTest implements Runnable

{

private boolean flag;

LockTest(boolean flag)

{

this.flag = flag;

}

public void run()

{

if(flag)

{

synchronized(MyLokc.locka)

{

System.out.println("1 get locka");

synchronized(MyLokc.lockb)

{

System.out.println("1get lockb");

}

}

}

else

{

synchronized(MyLokc.lockb)

{

System.out.println("2get lockb");

synchronized(MyLokc.locka)

{

System.out.println("2get locka");

}

}

}

}

}

classMyLokc

{

static Object locka = new Object();

static Object lockb = new Object();

}

classSingleDemo

{

public static void main(String[] args)

{

Thread t1 = new Thread( newLockTest(true));

Thread t2 = new Thread( newLockTest(false));

t1.start();

t2.start();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: