随笔分类 -  thread

1 2 下一页
Java多线程系列--AQS之 LockSupport
摘要:concurrent包是基于AQS (AbstractQueuedSynchronizer)框架的,AQS(JAVA CAS原理、unsafe、AQS)框架借助于两个类: Unsafe(提供CAS操作) 《AQS之:Unsafe(java可直接操作内存(),挂起与恢复,CAS操作)》 LockSup 阅读全文
posted @ 2016-11-14 22:12 duanxz 阅读(1380) 评论(0) 推荐(0) 编辑
ThreadLocal的坑--ThreadLocal跨线程传递问题
摘要:1、父子线程间的传递问题 ThreadLocal的子类InheritableThreadLocal其实已经帮我们处理好了,通过这个组件可以实现父子线程之间的数据传递,在子线程中能够父线程中的ThreadLocal本地变量。 我们发现InheritableThreadLocal中createMap,以 阅读全文
posted @ 2016-04-28 23:38 duanxz 阅读(5036) 评论(1) 推荐(0) 编辑
Thread之七:Object里的wait、notify、notifyAll的使用方法
摘要:wait()、notify()、notifyAll()是三个定义在Object类里的方法,可以用来控制线程的状态 这三个方法最终调用的都是jvm级的final native方法。随着jvm运行平台的不同可能有些许差异。 如果对象调用了wait方法就会使持有该对象的线程把该对象的控制权交出去,然后处于 阅读全文
posted @ 2016-02-29 15:21 duanxz 阅读(4539) 评论(2) 推荐(0) 编辑
Thread之六:线程创建方法
摘要:1.继承Thread类,重写该类的run()方法。 2.实现Runnable接口,并重写该接口的run()方法,该run()方法同样是线程执行体,创建Runnable实现类的实例,并以此实例作为Thread类的target来创建Thread对象,该Thread对象才是真正的线程对象。 3.使用Cal 阅读全文
posted @ 2016-02-29 11:26 duanxz 阅读(743) 评论(0) 推荐(0) 编辑
Thread之五:线程的优先级
摘要:Java线程可以有优先级的设定,高优先级的线程比低优先级的线程有更高的几率得到执行(不完全正确,请参考下面的“线程优先级的问题“)。 优先级的取值 Java线程的优先级是一个整数,其取值范围是1 (Thread.MIN_PRIORITY ) - 10 (Thread.MAX_PRIORITY )。 阅读全文
posted @ 2016-02-28 23:48 duanxz 阅读(40247) 评论(0) 推荐(1) 编辑
Thread之四:java线程返回结果的方法
摘要:《Thread之四:java线程返回结果的方法》 《Runnable、Callable、Future和FutureTask之一:获取线程的返回值》 《CompletionService之一:获得线程(线程池的)处理结果》 本文目录: 第一种方法:通过线程的实例变量传递方式获取结果第二种方法:使用Ca 阅读全文
posted @ 2015-12-17 11:05 duanxz 阅读(5582) 评论(0) 推荐(0) 编辑
Thread之三:Thread Join()的用法
摘要:join()的使用场景 在很多情况下,主线程创建并启动子线程,如果子线程中要进行大量的耗时运算,主线程将可能早于子线程结束。如果主线程需要知道子线程的执行结果时,就需要等待子线程执行结束了。主线程可以sleep(xx),但这样的xx时间不好确定,因为子线程的执行时间不确定,join()方法比较合适这 阅读全文
posted @ 2015-12-11 11:28 duanxz 阅读(87285) 评论(12) 推荐(7) 编辑
Thread之二:sleep、wait、yield、join
摘要:《Thread之一:线程生命周期及五种状态》 《Thread之二:sleep、wait、yield、join》 《juc线程池原理(四): 线程池状态介绍》 一、回顾下概念 Java中的多线程是一种抢占式的机制而不是分时机制。线程主要有以下几种状态:新建,就绪,运行,阻塞,死亡。抢占式机制指的是有多 阅读全文
posted @ 2015-08-06 15:54 duanxz 阅读(1184) 评论(0) 推荐(0) 编辑
Thread之一:线程生命周期及六种状态
摘要:《Thread之一:线程生命周期及五种状态》 《Thread之二:sleep、wait、yield、join》 《juc线程池原理(四): 线程池状态介绍》 一、线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 上图中基本上囊括了Java中多线程各重要知识 阅读全文
posted @ 2015-08-06 15:53 duanxz 阅读(13335) 评论(0) 推荐(0) 编辑
进程间通信和线程间通信的几种方式
摘要:进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。 阅读全文
posted @ 2015-07-03 15:35 duanxz 阅读(530) 评论(0) 推荐(0) 编辑
Synchronized之三:实现原理
摘要:一、Java源代码级别 synchronized(对象) 字节码层级 使用idea插件jclasslib插件查看字节码,我们以之前代码为例 在字节码层面是以monitorenter作为开始锁的开始,以moniterexit作为结束。 汇编级别 我们使用hsdis工具对Java源码进行反编译为汇编代码 阅读全文
posted @ 2015-05-11 14:03 duanxz 阅读(5987) 评论(1) 推荐(3) 编辑
Runnable、Callable、Future和FutureTask之一:获取线程的返回值
摘要:《Thread之四:java线程返回结果的方法》 《Runnable、Callable、Future和FutureTask之一:获取线程的返回值》 《CompletionService之一:获得线程(线程池的)处理结果》 Java从发布的第一个版本开始就可以很方便地编写多线程的应用程序,并在设计中引 阅读全文
posted @ 2015-05-08 23:20 duanxz 阅读(1800) 评论(0) 推荐(0) 编辑
Runnable、Callable、Future和FutureTask之二:源码解析
摘要:一、Callable与Future类图 1、类图 许多任务实际上都是存在延迟的计算,对于这些任务,Callable是一种更好的抽象:它会返回一个值,并可能抛出一个异常。Callable接口: V call() throws Exception; 可以看到,这是一个泛型接口,call()函数返回的类型 阅读全文
posted @ 2015-05-08 23:11 duanxz 阅读(544) 评论(0) 推荐(0) 编辑
Thread之八:interrupt中断
摘要:Java中断机制是一种协作机制,也就是说通过中断并不能直接终止另一个线程,它只是要求被中断线程在合适的时机中断自己,这需要被中断的线程自己处理中断。这好比是家里的父母叮嘱在外的子女要注意身体,但子女是否注意身体,怎么注意身体则完全取决于自己。 认为Java设置线程中断就是表示线程停止了,不往前执行了 阅读全文
posted @ 2015-04-26 10:23 duanxz 阅读(3110) 评论(0) 推荐(2) 编辑
Thread之九:stop
摘要:搞过Java线程的人都知道,stop这个方法是臭名昭著了,早就被弃用了,但是现在任然有很多钟情与他的人,永远都放不下他,因为从他的字面意思上我们可以知道他貌似可以停止一个线程,这个需求是每个搞线程开发的人都想要的操作,但是他并非是真正意义上的停止线程,而且停止线程还会引来一些其他的麻烦事,下面就来详 阅读全文
posted @ 2015-04-02 00:07 duanxz 阅读(1739) 评论(0) 推荐(0) 编辑
java调优1:找出Java进程中大量消耗CPU
摘要:问题分析:1,程序属于CPU密集型,和开发沟通过,排除此类情况。2,程序代码有问题,出现死循环,可能性极大。问题解决:1,开发那边无法排查代码某个模块有问题,从日志上也无法分析得出。2,记得原来通过strace跟踪的方法解决了一台PHP服务器CPU占用高的问题,但是通过这种方法无效,经过google 阅读全文
posted @ 2014-12-12 16:19 duanxz 阅读(7094) 评论(0) 推荐(0) 编辑
Thread之十:停止线程方法汇总
摘要:在上篇文章《多线程的使用——Thread类和Runnable接口》中提到中断线程的问题。在JAVA中,曾经使用stop方法来停止线程,然而,该方法具有固有的不安全性,因而已经被抛弃(Deprecated)。那么应该怎么结束一个进程呢?官方文档中对此有详细说明:《为何不赞成使用 Thread.stop 阅读全文
posted @ 2014-05-14 21:37 duanxz 阅读(15828) 评论(0) 推荐(0) 编辑
JAVA中线程同步的方法(7种)汇总
摘要:同步的方法: 一、同步方法 即有synchronized关键字修饰的方法。 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时, 内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。 注: synchronized关键字也可以修饰静态方法,此时如果调用该静态方法,将会 阅读全文
posted @ 2014-05-05 16:51 duanxz 阅读(50041) 评论(3) 推荐(4) 编辑
CompletableFuture详解
摘要:背景 在JDK1.5已经提供了Future和Callable的实现,可以用于阻塞式获取结果,如果想要异步获取结果,通常都会以轮询的方式去获取结果,如下: //定义一个异步任务 Future<String> future = executor.submit(()->{ Thread.sleep(200 阅读全文
posted @ 2014-03-26 14:43 duanxz 阅读(4192) 评论(0) 推荐(0) 编辑
Thread Dump 分析综述
摘要:最近在做性能测试,需要对线程堆栈进行分析,在网上收集了一些资料,学习完后,将相关知识整理在一起,输出文章如下。 一、Thread Dump介绍 1.1什么是Thread Dump? Thread Dump是非常有用的诊断Java应用问题的工具。每一个Java虚拟机都有及时生成所有线程在某一点状态的t 阅读全文
posted @ 2012-11-05 13:32 duanxz 阅读(679) 评论(0) 推荐(0) 编辑

1 2 下一页