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();
}
}