![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java多线程
道仁
喜欢看书从书中汲取精神食粮,喜欢下象棋,在楚河汉界间发散思维,磨练心智。喜欢听歌,从歌曲中舒缓心情。喜欢运动,从运动中强健体魄。
本着勤奋务实的态度在软件领域顽强拼搏。执着谦虚谨慎的心学习前端软件技术。不断的提升自己,让自己始终保持随时应付工作需要。
展开
-
简析 java多线程中的死锁与生命性
使用Single Threaded Execution Pattern 时,可能会有发生死锁(deadlock)的危险。所谓的死锁,是指两个线程分别获取了锁定,互相等待另一个线程解除锁定的现象。发生死锁时,那个线程都无法继续执行下去,所以程序会失去生命性。 来举个例子吧。假设Alice 与Bobby 同吃一个盘子所盛放的中国面条,盘子的旁边只用一只汤匙与一支叉子,而要吃面条时,同时需原创 2010-02-25 11:18:00 · 524 阅读 · 0 评论 -
轻松使用线程: 减少争用
http://www.ibm.com/developerworks/cn/java/j-threads/index2.html抛开您自己的习惯,提高应用程序的性能在本系列的 第 1 部分,我们讨论了无争用同步的性能开销。尽管常常听说同步方法调用的开销是非同步方法调用开销的 50 倍,这个数字实际上仍然相当容易产生误导。JVM 的每个后继版本在整体转载 2015-03-11 16:53:54 · 663 阅读 · 0 评论 -
ReentrantLock -synchronized 对比
JDK 5.0为开发人员开发高性能的并发应用程序提供了一些很有效的新选择。例如,java.util.concurrent.lock 中的类 ReentrantLock 被作为 Java 语言中 synchronized 功能的替代,它具有相同的内存语义、相同的锁定,但在争用条件下却有更好的性能,此外,它还有 synchronized 没有提供的其他特性。这是否意味着我们应当忘记 synchro转载 2015-03-07 20:26:11 · 435 阅读 · 0 评论 -
Java中ConcurrentHashMap学习
ConcurrentHashMap融合了hashtable和hashmap二者的优势。hashtable是做了同步的,hashmap未考虑同步。所以hashmap在单线程情况下效率较高。hashtable在的多线程情况下,同步操作能保证程序执行的正确性。但是hashtable每次同步执行的时候都要锁住整个结构。看下图:图左侧清晰的标注出来,lock每次都要锁住整个结转载 2015-03-08 19:33:34 · 482 阅读 · 0 评论 -
深入理解Java内存模型之系列篇
深入理解Java内存模型(一)——基础并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来转载 2015-01-14 14:54:17 · 1567 阅读 · 0 评论 -
Java多线程--让主线程等待所有子线程执行完毕
数据量很大百万条记录,因此考虑到要用多线程并发执行,在写的过程中又遇到问题,我想统计所有子进程执行完毕总共的耗时,在第一个子进程创建前记录当前时间用System.currentTimeMillis()在最后一个子进程结束后记录当前时间,两次一减得到的时间差即为总共的用时,代码如下 Java代码 long tStart = System.currentTime转载 2014-10-09 16:45:42 · 778 阅读 · 0 评论 -
静态方法加锁,和非静态方法加锁区别
// 这是一个很简单的类,里面共享静态变量 num,然后一个静态 和 非静态方法,都加上锁// 我们假设有两个线程同时操作这两个方法,那么数据能互斥吗? Java代码 public class Walk { public static int num = 100; public static Walk walk = new转载 2014-04-16 10:17:16 · 2821 阅读 · 0 评论 -
线程安全的单例模式
单例模式单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。单例模式有一下特点:1、单例类只能有一个实例。2、单例类必须自己自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。一、懒汉式单例在类被加载的时候,唯一实例已经被创建。这个设计模式在Java中容易实现,在别的语言中难以实现。单例模式-懒汉式单例public class LazySingleton { /*** 私有静态对象,加载时候不做初始化 */ private转载 2010-10-27 14:53:00 · 1009 阅读 · 0 评论 -
JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jstat
jstack -- 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的转载 2013-02-20 20:09:03 · 1409 阅读 · 0 评论 -
java多线程基础分析
<br />线程:是指进程中的一个执行流程。<br />线程与进程的区别:每个进程都需要操作系统为其分配独立的内存地址空间,而同一进程中的所有线程在同一块地址空间中工作,这些线程可以共享同一块内存和系统资源。 <br />如何创建一个线程? <br />创建线程有两种方式,如下:<br />1、 扩展java.lang.Thread类<br />2、 实现Runnable接口<br />Thread类代表线程类,它的两个最主要的方法是:<br />run()——包含线程运行时所执行的代码<br />Star原创 2011-05-10 22:08:00 · 501 阅读 · 0 评论 -
Java多线程总结之线程安全队列Queue
在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需要选用阻塞队列或者非阻塞队列。注:什么叫线程安全?这个首先要明确。线程安全的类 ,指的是类内共享的全局变量的转载 2015-04-17 15:51:04 · 961 阅读 · 0 评论