![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java线程与并发
Java我人生
java我人生,即使跑在路上被拌倒无数次,也不要规规矩矩走一辈子,岁月不止,奋斗不息,在为生活奔波的同时更希望为技术而痴狂,能够拥有自己的一家互联网公司!
展开
-
使用java.util.concurrent.ThreadFactory来创建线程
在How to do in java网站看到很多不错的好文章,《Creating Threads Usingjava.util.concurrent.ThreadFactory》就是其中一篇,它简单介绍了如何使用ThreadFactory来创建线程,最重要的是这中做的好处,为什么有时候要用它创建,下面就让我们看看这篇文章吧。工厂设计模式是一种最常用的设计模式在java中。这是一个创建型翻译 2015-01-10 16:08:54 · 10245 阅读 · 0 评论 -
深入分析java线程中的volatile
Volatile关键字平时在阅读jdk源码的时候,经常看到源码中有写变量被volatile关键字修饰,但是却不是十分清除这个关键字到底有什么用处,现在终于弄清楚了,那么我就来讲讲这个volatile到底有什么用吧。当一个变量被定义为volatile之后,就可以保证此变量对所有线程的可见性,即当一个线程修改了此变量的值的时候,变量新的值对于其他线程来说是可以立即得知的。可以理解成:对vola翻译 2015-06-18 08:55:57 · 2871 阅读 · 0 评论 -
java线程中CyclicBarrier的使用—实现一组线程“集齐”后,再进行其他操作
JDK1.6中的API中是这样介绍的:一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。CyclicBarrier 支持一个可选的 Runnabl原创 2014-12-26 22:42:50 · 1681 阅读 · 0 评论 -
java线程中信号量Semaphore类的应用
Semaphore当前在多线程环境下被扩放使用,操作系统的信号量是个很重要的概念,在进程控制方面都有应用。Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。比如在Windows下可以设置共享文件的最大客户端访问个数。 Sem原创 2014-12-25 22:39:59 · 2012 阅读 · 0 评论 -
ConurrentHashMap和Hashtable的区别
集合类是Java API的核心,但是我觉得要用好它们是一种艺术。我总结了一些个人的经验,譬如使用ArrayList能够提高性能,而不再需要过时的Vector了,等等。JDK 1.5引入了一些好用的并发集合类,它们对于大型的、要求低延迟的电子商务系统来说非常的有用。这篇文章中将会看看ConcurrentHashMap和Hashtable之间的区别。这篇文章是HashMap的工作原理以及HashM翻译 2015-03-30 10:17:10 · 2280 阅读 · 0 评论 -
JProfiler的详细使用介绍(JVM对象内存线程监测工具)
一、安装JProfiler 从http://www.ej-technologies.com/下载5.1.2并申请试用序列号 二、主要功能简介1.内存剖析 Memory profiler JProfiler 的内存视图部分可以提供动态的内存使用状况更新视图和显示关于内存分配状况信息的视图。所有的视图都有几个聚集层并且能够显示现有存在的对象和作为垃圾回收的对象。转载 2015-03-12 21:07:28 · 21586 阅读 · 1 评论 -
Java中的五种同步辅助类
当你使用synchronized关键字的时候,是通过互斥器来保障线程安全以及对共享资源的同步访问。线程间也经常需要更进一步的协调执行,来完成复杂的并发任务,比如wait/notify模式就是一种在多线程环境下的协调执行机制。通过API来获取和释放锁(使用互斥器)或者调用wait/notify等方法都是底层调用的方式。进一步来说,有必要为线程同步创建更高层次的抽象。通常用到的同步辅助类,就是对2翻译 2015-03-29 22:36:45 · 1969 阅读 · 0 评论 -
非阻塞线程安全列表——ConcurrentLinkedDeque应用举例
在java中,最常用的数据结构可能是列表。有数目不详的元素列表,你可以添加、阅读、或删除任何位置的元素。此外,并发列表允许不同的线程列表中添加或删除元素时不产生任何数据不一致。非阻塞列表提供如下操作,如果操作不能立即完成,列出抛出异常或者返回一个null值。Java 7中引入了ConcurrentLinkedDeque类,它实现了一个非阻塞并发列表,在本教程中,我们将学习使用这个类。翻译 2015-03-09 00:13:04 · 9615 阅读 · 0 评论 -
Java并发的四种风味:Thread、Executor、ForkJoin和Actor
这篇文章讨论了Java应用中并行处理的多种方法。从自己管理Java线程,到各种更好几的解决方法,Executor服务、ForkJoin 框架以及计算中的Actor模型。Java并发编程的4种风格:Threads,Executors,ForkJoin和Actors我们生活在一个事情并行发生的世界。自然地,我们编写的程序也反映了这个特点,它们可以并发的执行。当然除了Python代码(译者注:链翻译 2015-03-03 21:51:28 · 3019 阅读 · 0 评论 -
超越线程池:Java并发并没有你想的那么糟糕
很多人一直唠叨着并发中的新概念。然而,许多开发人员还没有机会把过多的注意力都放在上面。在这篇文章中,我们将带您了解Java 8 streams、 Hadoop、 Apache Spark、 Quasar fibers以及响应式编程,让你迅速入门。尤其是如果你不经常用它们的话。一句话,它并不遥远,它就在我们身边。我们该怎么做?谈到并发,一种很好的方式来形容当前的问题是来回答几个小问题以便更好翻译 2015-03-25 21:11:05 · 2322 阅读 · 2 评论 -
java线程中ThreadLocal类的使用及介绍
ThreadLocal总结1、ThreadLocal使用场合主要解决多线程中数据数据因并发产生不一致问题。ThreadLocal为每个线程的中并发访问的数据提供一个副本,通过访问副本来运行业务,这样的结果是耗费了内存,单大大减少了线程同步所带来性能消耗,也减少了线程并发控制的复杂度。2、ThreadLocal不能使用原子类型,只能使用Object类型。ThreadLocal的使用比转载 2015-01-03 22:46:09 · 1275 阅读 · 0 评论 -
java线程中锁存器CountDownLatch的使用
CountDownLatch类是一个同步计数器,构造时传入int参数,该参数就是计数器的初始值,每调用一次countDown()方法,计数器减1,计数器大于0 时,await()方法会阻塞程序继续执行。CountDownLatch可以看作是一个倒计数的锁存器,当计数减至0时触发特定的事件。利用这种特性,可以让主线程等待子线程的结束。下面以一个模拟运动员比赛的例子加以说明。 CountDow转载 2014-12-26 16:40:40 · 2393 阅读 · 0 评论 -
利用 Java dump 进行 JVM 故障诊断 (转IBM官网)
引言对于大型 java 应用程序来说,再精细的测试都难以堵住所有的漏洞,即便我们在测试阶段进行了大量卓有成效的工作,很多问题还是会在生产环境下暴露出来,并且很难在测试环境中进行重现。JVM 能够记录下问题发生时系统的运行状态并将其存储在转储(dump)文件中,从而为我们分析和诊断问题提供了重要的依据。常见的转储文件包括 Java Dump, Heap dump 和 System转载 2015-02-02 22:22:22 · 4620 阅读 · 0 评论 -
java线程中Callble和Future的使用
Callable是java.util.concurrent包中一个接口,Callable 接口类似于Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。但是Runnable 不会返回结果,并且无法抛出经过检查的异常。此接口中就声明了一个方法call(),这个方法计算结果,如果无法计算结果,则抛出一个异常。Executors 类包含一些从其他普通形式转换成 Callable原创 2015-01-10 23:28:07 · 4980 阅读 · 0 评论 -
用JDK中的 jps、jinfo、jstat、jstack、jmap、jconsole等命令对JVM,内存,线程进行分析和故障诊断
JDK提供了几个很实用的工具,如下:jinfo:观察运行中的java程序的运行环境参数:参数包括Java System属性和JVM命令行参数,java class path等信息。命令格式:jinfo 进程pidjps:用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。命令格式:jps 或 jps 远程服务ip地址 (默认端口1099)转载 2015-02-02 22:30:37 · 3782 阅读 · 0 评论 -
java线程池的原理、实现和应用
一. 线程池:其实到目前为止我们接触过很多关于池的概念:string池、连接池,之所以要用这个池,目的只有一个:资源的重复使用。线程池:首先创建一些线程,当服务器接收到一个客户请求后,就从线程池中取出一个空闲的线程为之服务,服务完后并不关闭该线程,而是将该线程还回到线程池中。在线程池的编程模式下,任务是提交给整个线程池的,而不是直接交给某个线程,线程池在拿到任务后,它就在内部找有无空闲转载 2015-01-13 09:51:46 · 3015 阅读 · 0 评论 -
如何在高并发分布式系统中生成全局唯一Id
又一个多月没冒泡了,其实最近学了些东西,但是没有安排时间整理成博文,后续再奉上。最近还写了一个发邮件的组件以及性能测试请看《NET开发邮件发送功能的全面教程(含邮件组件源码)》 ,还弄了个MSSQL参数化语法生成器,会在9月整理出来,有兴趣的园友可以关注下我的博客。 分享原由,最近公司用到,并且在找最合适的方案,希望大家多参与讨论和提出新方案。我和我的小伙伴们也讨论了这个主题,我受益匪浅啊转载 2015-09-01 09:00:14 · 24657 阅读 · 4 评论