Java并发编程的艺术-第一章<并发编程的挑战>
2017-03-05 23:04
447 查看
引起死锁的demo代码:
输出结果:
线程1和线程2的输出可能是第二到第五行之间。
建议:
有的并发程序写的不严谨,在并发下如果出现问题,定位起来会比较耗时和棘手。所以,对于Java开发工程师而言,笔者强烈建议多使用JDK并发包提供的并发容器和工具类来解决并发问题,因为这些类都已经通过了充分的测试和优化。
package com.evan.concurrent.thread; /** * Created by evan on 2/26/17. */ public class ThreadDeadLockTest { public static final String A = "A"; public static final String B = "B"; public static void main(String[] args) throws Exception { System.out.println("主线程开始。。。"); deadLock(); System.out.println("主线程结束。。。"); } public static void deadLock() throws Exception{ Thread t1 = new Thread(new Runnable() { public void run() { synchronized (A){ System.out.println(Thread.currentThread().getName()+"线程A执行1"); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (B){ System.out.println(Thread.currentThread().getName()+"线程B执行1"); } } } }); t1.start(); Thread t2 = new Thread(new Runnable() { public void run() { synchronized (B){ System.out.println(Thread.currentThread().getName()+"线程B执行2"); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (A){ System.out.println(Thread.currentThread().getName()+"线程A执行2"); } } } }); t2.start(); System.out.println("主线程执行"); } }
输出结果:
主线程开始。。。 主线程执行 主线程结束。。。 Thread-1线程B执行2 Thread-0线程A执行1
线程1和线程2的输出可能是第二到第五行之间。
建议:
有的并发程序写的不严谨,在并发下如果出现问题,定位起来会比较耗时和棘手。所以,对于Java开发工程师而言,笔者强烈建议多使用JDK并发包提供的并发容器和工具类来解决并发问题,因为这些类都已经通过了充分的测试和优化。
相关文章推荐
- <java并发编程的艺术>读书笔记-第三章java内存模型(一)
- Java并发编程的艺术-第一章之并发编程的挑战
- <并发编程的艺术>读书笔记-第三章java内存模型的基础
- 《java并发编程的艺术》---第一章:并发编程的挑战
- 并发编程的艺术笔记-(第一章)并发编程的挑战
- java并发编程的艺术【一】并发编程的挑战
- Java并发编程的艺术读书笔记(1)-并发编程的挑战
- 深入学习java并发编程:ThreadLocal<T>实现
- 深入学习java并发编程:CopyOnWriteArrayList<E>实现
- <Java 并发编程实践>读书笔记 --- 线程封闭
- Java并发编程:并发容器之CopyOnWriteArrayList<转>
- Java并发编程的艺术--第二章<Java并发机制的底层实现原理>
- java并发编程:线程安全管理类--原子操作类--AtomicLongFieldUpdater<T>
- java并发编程:线程安全管理类--原子操作类--AtomicReferenceFieldUpdater<T,V>
- 徒手用Java来写个Web服务器和框架吧<第一章:NIO篇>
- 黑马程序员<Java笔记<GUI 网络编程反射>>
- 【Java编程】Java学习笔记<一>
- Java学习笔记 第一章 入门<转>
- <Java 并发编程实践>读书笔记 --- 重排序
- 【Java编程】Java学习笔记<一>