文档章节

LockSupport和synchronized混合死锁问题

中成才
 中成才
发布于 2016/08/12 00:20
字数 114
阅读 28
收藏 0

我来滥竽充数一篇文章,LockSupportsynchronized果然不能混着用,直接造成死锁。

package test;

import java.util.concurrent.locks.LockSupport;

/**
 * @author Wei.Chou(weichou2010@gmail.com)
 * @version 1.0, 12/08/2016
 */
public class ParkTest {
    public static void main(String[] args) {
        final Thread thread = new Thread() {
            @Override
            public void run() {
                System.out.println("thread started");
                synchronized (ParkTest.class) {
                    System.out.println("thread park");
                    LockSupport.park();
                    System.out.println("thread release");
                }
            }
        };
        thread.start();
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        new Thread() {
            @Override
            public void run() {
                System.out.println("thread1 started");
                // TODO: 16/8/12 果然死锁
                synchronized (ParkTest.class) {
                    System.out.println("thread1 unpark");
                    LockSupport.unpark(thread);
                    System.out.println("thread1 end");
                }

            }
        }.start();
    }
}

© 著作权归作者所有

共有 人打赏支持
中成才
粉丝 51
博文 125
码字总数 43471
作品 0
海淀
架构师
私信 提问
[高并发Java 五] JDK并发包1

在[高并发Java 二] 多线程基础中,我们已经初步提到了基本的线程同步操作。这次要提到的是在并发包中的同步控制工具。 1. 各种同步控制工具的使用 1.1 ReentrantLock ReentrantLock感觉上是s...

Hosee
2016/01/21
6.4K
0
concurrent包的同步控制工具

ReentrantLock 可重入锁,应用层面的锁,jdk6后性能和synchronized差不多,但是有更多的功能。 可以响应线程中断: 可以限时,这样可以避免死锁 ReentrantLock可以实现公平锁: 通过Conditi...

肥肥小浣熊
2017/11/06
0
0
显式锁(java.util.Concurrent)

一、前言   在分析完了集合框架后,很有必要接着分析java并发包下面的源码,JUC(java.util.concurrent)源码也是我们学习Java迈进一步的重要过程。我们分为几个模块进行分析,首先是对锁模...

狼王黄师傅
11/27
0
0
高并发Java(5):JDK并发包1

在高并发Java(2):多线程基础中,我们已经初步提到了基本的线程同步操作。这次要提到的是在并发包中的同步控制工具。 1. 各种同步控制工具的使用 1.1 ReentrantLock ReentrantLock感觉上是...

卯金刀GG
2017/11/02
0
0
JUC 基础内容概述

Concurrent Programming in Java 的作者 Doug Lea 编写了一个极其优秀的、免费的并发实用程序包,它包括并发应用程序的锁、互斥、队列、线程池、轻量级任务、有效的并发集合、原子的算术操作...

暗之幻影
2016/12/17
35
0

没有更多内容

加载失败,请刷新页面

加载更多

my.ini

1

architect刘源源
6分钟前
0
0
docker dns

There is a opensource application that solves this issue, it's called DNS Proxy Server It's a DNS server that solves containers hostnames, if could not found a hostname that mat......

kut
15分钟前
0
0
寻找数学的广度——《这才是数学》读书笔记2700字

寻找数学的广度——《这才是数学》读书笔记2700字: 文|程哲。数学学习方式之广:国内外数学教育方面的专家,进行了很多种不同的数学学习方式尝试,如数学绘本、数学游戏、数学实验、数学步道...

原创小博客
21分钟前
5
0
ubuntu常用操作

显卡GPU 查看显卡信息sudo lshw -numeric -class video# 查看显卡型号lspci | grep -i nvidia# 查看驱动版本sudo dpkg --list | grep nvidia-*或者 ubuntu-drivers devices#查看显卡...

hc321
昨天
2
0
SpringBoot + Mybatis 配置多数据源(Srping boot 二)

前置条件,你已经配置好spring boot+mybatis,可以参考之前的博客 实现逻辑通过注解+aop切面编程来动态更新datasource 第一步,配置多个DataSource server: port: 8080freezing: ...

小海bug
昨天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部