2018-07-22 period Java deadlock small case programming

Source: Internet
Author: User

1. Deadlock Cases

public class DeadLock {

Final Object Locka = new Object ();

public static void Main (string[] args) {

DeadLock demo = new DeadLock ();

Demo.startlock ();

}

public void Startlock () {

Threada a = new Threada (Locka, lockb);

THREADB B = new threadb (Locka, lockb);

A.start ();

B.start ();

}

}

Class Threada extends Thread {

Private Object locka = null;

Private Object lockb = null;

Public Threada (Object A, object B) {

This.locka = A;

THIS.LOCKB = b;

}

public void Run () {

Synchronized (Locka) {

SYSTEM.OUT.PRINTLN ("----Thread a:locked A");

try {

Sleep (3000);

} catch (Interruptedexception e) {

E.printstacktrace ();

}

Synchronized (LOCKB) {

SYSTEM.OUT.PRINTLN ("----Thread a:locked B");

}

}

SYSTEM.OUT.PRINTLN ("----Thread a:finished");

}

}

Class Threadb extends Thread {

Private Object locka = null;

Private Object lockb = null;

Public Threadb (Object A, object B) {

This.locka = A;

THIS.LOCKB = b;

}

public void Run () {

Synchronized (LOCKB) {

SYSTEM.OUT.PRINTLN ("----Thread b:locked B");

try {

Sleep (3000);

} catch (Interruptedexception e) {

E.printstacktrace ();

}

Synchronized (Locka) {

System.out.println ("Tread b:locked A");

}

}

SYSTEM.OUT.PRINTLN ("----Thread b:finished");

}

}

2. Deadlock Analysis

Print Thread Dump

Linux environment kill-3 PID or Jstack

Windows environment ctrl+fn+b

The dump information is as follows:

D:\test\deadlock>java deadlock

----Thread a:locked A

----Thread b:locked B

2018-07-14 17:45:52

Full thread dump Java HotSpot (TM) Client VM (24.65-b04 mixed mode, sharing):

"DESTROYJAVAVM" prio=6 tid=0x02c4bc00 nid=0x1548 waiting on condition [0x00000000]

Java.lang.Thread.State:RUNNABLE

"Thread-1" prio=6 tid=0x02d2b400 nid=0x2b24 waiting for monitor entry [0x054bf000]

Java.lang.Thread.State:BLOCKED (on object monitor)

At Threadb.run (deadlock.java:64)

-Waiting to lock <0x252811c0> (a java.lang.Object)

-Locked <0x252811c8> (a java.lang.Object)

"Thread-0" prio=6 tid=0x02d2ac00 nid=0x3640 waiting for monitor entry [0x0542f000]

Java.lang.Thread.State:BLOCKED (on object monitor)

At Threada.run (deadlock.java:37)

-Waiting to lock <0x252811c8> (a java.lang.Object)

-Locked <0x252811c0> (a java.lang.Object)

"Service Thread" daemon prio=6 tid=0x02cdd800 nid=0x4138 runnable [0x00000000]

Java.lang.Thread.State:RUNNABLE

"C1 CompilerThread0" daemon prio=10 tid=0x02cdc800 nid=0x2324 waiting on condition [0x00000000]

Java.lang.Thread.State:RUNNABLE

"Attach Listener" daemon prio=10 tid=0x02cdac00 nid=0x22dc runnable [0x00000000]

Java.lang.Thread.State:RUNNABLE

"Signal Dispatcher" daemon prio=10 tid=0x02d04800 nid=0x2fb0 waiting on condition [0x00000000]

Java.lang.Thread.State:RUNNABLE

"Finalizer" daemon prio=8 tid=0x02c70000 nid=0x708 in object.wait () [0x050cf000]

Java.lang.Thread.State:WAITING (on object monitor)

At java.lang.Object.wait (Native Method)

-Waiting on <0x25200fc8> (a java.lang.ref.referencequeue$lock)

At Java.lang.ref.ReferenceQueue.remove (referencequeue.java:135)

-Locked <0x25200fc8> (a java.lang.ref.referencequeue$lock)

At Java.lang.ref.ReferenceQueue.remove (referencequeue.java:151)

At Java.lang.ref.finalizer$finalizerthread.run (finalizer.java:209)

"Reference Handler" daemon prio=10 tid=0x02c6e800 Nid=0xf40 in object.wait () [0x0503f000]

Java.lang.Thread.State:WAITING (on object monitor)

At java.lang.Object.wait (Native Method)

-Waiting on <0x25200db0> (a java.lang.ref.reference$lock)

At Java.lang.Object.wait (object.java:503)

At Java.lang.ref.reference$referencehandler.run (reference.java:133)

-Locked <0x25200db0> (a java.lang.ref.reference$lock)

"VM Thread" prio=10 tid=0x02c6d400 nid=0x1150 runnable

"VM periodic Task Thread" prio=10 tid=0x02d16400 nid=0x3130 waiting on condition

JNI Global references:111

Found One java-level deadlock:

=============================

"Thread-1":

Waiting to lock monitor 0x02c73be4 (Object 0x252811c0, a java.lang.Object),

Which is held by "Thread-0"

"Thread-0":

Waiting to lock monitor 0x02c75704 (Object 0x252811c8, a java.lang.Object),

Which is held by "Thread-1"

Java stack information for the threads listed above:

===================================================

"Thread-1":

At Threadb.run (deadlock.java:64)

-Waiting to lock <0x252811c0> (a java.lang.Object)

-Locked <0x252811c8> (a java.lang.Object)

"Thread-0":

At Threada.run (deadlock.java:37)

-Waiting to lock <0x252811c8> (a java.lang.Object)

-Locked <0x252811c0> (a java.lang.Object)

Found 1 deadlock.

Heap

def New Generation Total 4928K, used 867K [0x25200000, 0x25750000, 0x2a750000)

Eden Space 4416K, 19% used [0x25200000, 0X252D8FE0, 0x25650000)

From space 512K, 0% used [0x25650000, 0x25650000, 0x256d0000)

To space 512K, 0% used [0x256d0000, 0x256d0000, 0x25750000)

Tenured generation total 10944K, used 0K [0x2a750000, 0x2b200000, 0x35200000)

The space 10944K, 0% used [0x2a750000, 0x2a750000, 0x2a750200, 0x2b200000)

Compacting Perm Gen Total 12288K, used 157K [0x35200000, 0x35e00000, 0x39200000)

The space 12288K, 1% used [0x35200000, 0x35227730, 0x35227800, 0x35e00000)

Ro space 10240K, 44% used [0x39200000, 0x3967a688, 0x3967a800, 0x39c00000)

RW Space 12288K, 52% used [0x39c00000, 0x3a254170, 0x3a254200, 0x3a800000)


2018-07-22 period Java deadlock small case programming

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.