当两条线程同时访问一个类的时候,可能会带来一些问题。并发线程重入可能会带来内存泄漏、程序不可控等等。不管是线程间的通讯还是线程共享数据都需要使用Java的锁机制控制并发代码产生的问题。本篇总结主要著名Java的锁机制,阐述多线程下如何使用锁机制进行并发线程沟通。1、并发下的程序异 ...
当两条线程同时访问一个类的时候,可能会带来一些问题。并发线程重入可能会带来内存泄漏、程序不可控等等。不管是线程间的通讯还是线程共享数据都需要使用Java的锁机制控制并发代码产生的问题。本篇总结主要著名Java的锁机制,阐述多线程下如何使用锁机制进行并发线程沟通。
1、并发下的程序异常
先看下下面两个代码,查看异常内容。
异常1:单例模式
1 package com.scl.thread; 2 3 public class SingletonException 4 { 5 public static void main(String[] args) 6 { 7 // 开启十条线程进行分别测试输出类的hashCode,测试是否申请到同一个类 8 for (int i = 0; i < 10; i++) 9 {10 new Thread(new Runnable()11 {12 @Override13 public void run()14 {15 try16 {17 Thread.sleep(100); 18 }19 catch (InterruptedException e)20 {21 e.printStackTrace();22 }23 System.out.println(Thread.currentThread().getName() + " " + MySingle.getInstance().hashCode());24 }25 }).start();26 }27 }28 }29 30 class MySingle31 {32 private static MySingle mySingle = null;33 34 private MySingle()35 {36 }37 38 public static MySingle getInstance()39 {40 if (mySingle == null) { mySingle = new MySingle(); }41 return mySingle;42 }43 }
原标题:Java多线程(二) 多线程的锁机制
关键词:JAVA
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。