java多线程死锁

package com.luowen.test;



public class DealLockTest {



	public static void main(String[] args) {

		Go g1 = new Go(true);

		Go g2 = new Go(false);

		

		Thread t1 = new Thread(g1);

		Thread t2 = new Thread(g2);

			t1.start();

			try{Thread.sleep(5);} catch(Exception e){}

			t2.start();

			

	}

}



class MyLock

{

	final public static Object locka = new Object();

	final public static Object lockb = new Object();

}



class Go implements Runnable

{



	private boolean flag;

	

	Go(boolean flag)

	{

		this.flag = flag;

	}

	@Override

	public void run() {

		// TODO Auto-generated method stub

		if(flag)

		{

			while(true)

			{

					synchronized (MyLock.locka)

				{

					System.out.println(Thread.currentThread().getName() + "================if get the locka");

					synchronized (MyLock.lockb) {

						System.out.println(Thread.currentThread().getName() + "================if get the locka and lockb");

					}

				}

			}

			

		}

		else

		{

			while(true)

			{

				synchronized (MyLock.lockb)

				{

					

					System.out.println(Thread.currentThread().getName() + "================else get the lockb");

					synchronized(MyLock.locka)

					{

						System.out.println(Thread.currentThread().getName() + "================else get the locka and lockb");

						

					}

				}

			}

		}

	}

}

  

你可能感兴趣的:(java多线程)