/**
* @author hollis */
public class JStackDemo {
public static void main(String[] args) {
Thread t1 = new Thread(new DeadLockclass(true));//建⽴⼀个线程 Thread t2 = new Thread(new DeadLockclass(false));//建⽴另⼀个线程 t1.start();//启动⼀个线程 t2.start();//启动另⼀个线程 }}
class DeadLockclass implements Runnable { public boolean falg;// 控制线程 DeadLockclass(boolean falg) { this.falg = falg; }
public void run() { /**
* 如果falg的值为true则调⽤t1线程 */
if (falg) {
while (true) {
synchronized (Suo.o1) {
System.out.println(\"o1 \" + Thread.currentThread().getName()); synchronized (Suo.o2) {
System.out.println(\"o2 \" + Thread.currentThread().getName()); } } } } /**
* 如果falg的值为false则调⽤t2线程 */ else {
while (true) {
synchronized (Suo.o2) {
System.out.println(\"o2 \" + Thread.currentThread().getName()); synchronized (Suo.o1) {
System.out.println(\"o1 \" + Thread.currentThread().getName()); } } } } }}
class Suo {
static Object o1 = new Object(); static Object o2 = new Object();}
import org.springframework.stereotype.Component;
@Component
public class SynchronizedTest {
private static final Object lockA = new Object(); private static final Object lockB = new Object(); /**
* ThreadA先获取lockA,在获取lockB */
private static class ThreadA extends java.lang.Thread { @Override
public void run() { // 获取临界区A
synchronized (lockA) {
System.out.println(\"get lockA success\"); // 模拟耗时操作 try {
Thread.currentThread().setName(\"线程A\"); Thread.sleep(500);
} catch (InterruptedException e) { e.printStackTrace(); }
// 获取临界区B
synchronized (lockB) {
System.out.println(\"get lockB success\"); } } } }
/**
* ThreadB先获取lockB,在获取lockA */
private static class ThreadB extends java.lang.Thread { @Override
public void run() { // 获取临界区A
synchronized (lockB) {
System.out.println(\"get lockB success\"); // 模拟耗时操作 try {
Thread.currentThread().setName(\"线程B\"); Thread.sleep(500);
} catch (InterruptedException e) { e.printStackTrace(); }
// 获取临界区B
synchronized (lockA) {
System.out.println(\"get lockA success\"); } } } }
static {
new ThreadA().start(); new ThreadB().start(); } }
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sarr.cn 版权所有 赣ICP备2024042794号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务