
Thread
文章平均质量分 66
普通网友
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线程sleep,join,yield的区别
1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是如果有Synchronized同步块,其他线程仍然不同访问共享数据。注意该方法要捕获异常 比如有两个线程同时执行(没有Synchronized),一个线程优先级为MAX_PRIORITY,另一个为MIN_PRIORITY,如果没有Sleep()方法,只有高优先级的线...原创 2013-06-21 17:37:03 · 198 阅读 · 0 评论 -
Java多线程同步器
CyclcBarrier 在实际应用中,有时候需要多个线程同时工作以完成同一件事情,而且在完成过程中,往往会等待其他线程都完成某一阶段后再执行,等所有线程都到达某一个阶段后再统一执行。 比如有几个旅行团需要途经深圳、广州、韶关、长沙最后到达武汉。旅行团中有自驾游的,有徒步的,有乘坐旅游大巴的;这些旅行团同时出发,并且每到一个目的地,都要等待其他旅行团到达此地后再同时出发,直到都到达...原创 2013-07-12 17:00:14 · 172 阅读 · 0 评论 -
ThreadGroup其实比ExecutorService更好
用java做抓取的时候免不了要用到多线程的了,因为要同时抓取多个网站或一条线程抓取一个网站的话实在太慢,而且有时一条线程抓取同一个网站的话也比较浪费CPU资源。要用到多线程的等方面,也就免不了对线程的控制或用到线程池。 我在做我们现在的那一个抓取框架的时候,就曾经用过java.util.concurrent.ExecutorService作为线程池,关于ExecutorService的使用代码...原创 2013-07-17 13:32:17 · 160 阅读 · 0 评论 -
ThreadLocal的介绍(利用变量副本实现多线程访问同一变量)
早在Java 1.2推出之时,Java平台中就引入了一个新的支持:java.lang.ThreadLocal,给我们在编写多线程程序时提供了一种新的选择。使用这个工具类可以很简洁地编写出优美的多线程程序,虽然ThreadLocal非常有用,但是似乎现在了解它、使用它的朋友还不多。ThreadLocal是什么 ThreadLocal是什么呢?其实ThreadLocal并...原创 2013-07-17 14:20:24 · 216 阅读 · 0 评论 -
Java多线程之Semaphore
[code="java"] import java.util.ArrayList; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Semaphore; ...原创 2013-07-17 16:12:08 · 153 阅读 · 0 评论 -
并发线程组件 Amino
Amino CBB (Concurrent Building Blocks) 类库将提供优化后的并发线程组件,适用于JDK6.0 及其以后的版本。Amino Java 类库将涉及下面四个方面的内容:1) 数据结构 该组件将提供一套免锁的集合类。因为这些数据结构采用免锁的运算法则来生成,所以,它们将拥有基本的免锁组件的特性,如可以避免不同类型的死锁,不同类型的线程初始化顺...原创 2013-07-23 13:29:29 · 277 阅读 · 0 评论 -
初学Java多线程:线程的生命周期
初学Java多线程系列的本部分介绍线程的生命周期。与人有生老病死一样,线程也同样要经历开始(等待)、运行、挂起和停止四种不同的状态。这四种状态都可以通过Thread类中的方法进行控制。AD: 2013大数据全球技术峰会低价抢票中与人有生老病死一样,线程也同样要经历开始(等待)、运行、挂起和停止四种不同的状态。这四种状态都可以通过Thread类中的方法进行控制。下面给出了Thread...原创 2013-02-25 13:14:01 · 111 阅读 · 0 评论 -
Java Thread join() 的用法
Java Thread中, join() 方法主要是让调用改方法的thread完成run方法里面的东西后, 在执行join()方法后面的代码。示例:[code="java"]class ThreadTesterA implements Runnable { private int counter; @Override public void run() { whi...原创 2013-02-25 13:24:42 · 120 阅读 · 0 评论 -
java之yield(),sleep(),wait()区别详解-备忘笔记
1、sleep()使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。注意该方法要捕捉异常。例如有两个线程同时执行(没有synchronized)一个线程优先级为MAX_PRIORITY,另一个为MIN_PRIORITY,如果没有Sleep()方法,只有高优先级的...原创 2013-02-25 14:32:52 · 121 阅读 · 0 评论 -
初学Java多线程:慎重使用volatile关键字
学习Java多线程中会遇到使用volatile关键字的情况。volatile关键字用于声明简单类型变量,如int、float、boolean等数据类型。使用它有一定的限制。AD: 2013大数据全球技术峰会低价抢票中volatile关键字相信了解Java多线程的读者都很清楚它的作用。volatile关键字用于声明简单类型变量,如int、float、boolean等数据类型。如果这些...原创 2013-02-25 15:18:11 · 100 阅读 · 0 评论 -
Java Thread.interrupt 害人! 中断JAVA线程
程序是很简易的。然而,在编程人员面前,多线程呈现出了一组新的难题,如果没有被恰当的解决,将导致意外的行为以及细微的、难以发现的错误。 在本篇文章中,我们针对这些难题之一:如何中断一个正在运行的线程。 背景 ...原创 2013-07-12 16:37:46 · 158 阅读 · 0 评论 -
Java多线程学习——Condition的使用
Condition 将 Object 监视器方法(wait、notify 和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意 Lock 实现组合使用,为每个对象提供多个等待 set(wait-set)。其中,Lock 替代了 synchronized 方法和语句的使用,Condition 替代了 Object 监视器方法的使用。 条件(也称为条件队列 或条件变量...原创 2013-07-12 14:36:50 · 186 阅读 · 0 评论 -
java中的lock和synchronized区别
1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候 线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定, 如果使用 synchronized ,如果A不释放,B将一直等下去,不能被中断 如果 使用ReentrantLock,如果A不释放,可以使B在等待了足够长...原创 2013-06-26 10:02:34 · 120 阅读 · 0 评论 -
对synchronized(this)的一些理解
一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。...原创 2013-06-26 10:18:51 · 85 阅读 · 0 评论 -
慎重使用volatile关键字
volatile关键字相信了解Java多线程的读者都很清楚它的作用。volatile关键字用于声明简单类型变量,如int、float、boolean等数据类型。如果这些简单数据类型声明为volatile,对它们的操作就会变成原子级别的。但这有一定的限制。例如,下面的例子中的n就不是原子级别的:package mythread;public class JoinThread exte...原创 2013-06-26 11:10:43 · 117 阅读 · 0 评论 -
lockInterruptibly 和lock的区别
lockInterruptibly 与 lock比较区别在于 lockInterruptibly 优先考虑响应中断,而不是响应锁定的普通获取或重入获取 [code="java"] package test; import java.util.concurrent.TimeUnit; import java.util.concurrent...原创 2013-06-26 16:36:41 · 353 阅读 · 0 评论 -
Exchanger-兄弟线程的信息交换
如果两个线程在运行过程中需要交换彼此的信息,比如一个数据或者使用的空间,就需要用到Exchanger这个类,Exchanger为线程交换信息提供了非常方便的途径,它可以作为两个线程交换对象的同步点,只有当每个线程都在进入 exchange ()方法并给出对象时,才能接受其他线程返回时给出的对象。 Exchanger的构造方法如下:[java] Exchan...原创 2013-07-05 16:23:42 · 177 阅读 · 0 评论 -
ExecutorService的execute和submit方法
因为之前一直是用的execute方法,最近有个情况需要用到submit方法,所以研究了下。三个区别:1、接收的参数不一样2、submit有返回值,而execute没有Method submit extends base method Executor.execute by creating and returning a Future that can be u...原创 2013-07-05 17:21:11 · 266 阅读 · 0 评论 -
处理 子线程的返回值
[code="java"]package com.jimmy.Thread.ConcurrentTools;import static java.lang.System.out;import java.util.ArrayList;import java.util.List;import java.util.concurrent.ArrayBlockingQueue;...原创 2013-07-08 14:19:12 · 230 阅读 · 0 评论 -
Monitor
1. 什么是Monitor? Monitor其实是一种同步工具,也可以说是一种同步机制,它通常被描述为一个对象,主要特点是: 对象的所有方法都被“互斥”的执行。好比一个Monitor只有一个运行“许可”,任一个线程进入任何一个方法都需要获得这个“许可”,离开时把许可归还。 通常提供singal机制:允许正持有“许可”的线程暂时放弃“许可”,等待某个谓词成真(条...原创 2013-07-12 10:44:43 · 221 阅读 · 0 评论 -
java多线程设计wait
在Java中,这个机制的实现依赖于wait/notify。等待机制与锁机制是密切关联的。例如: synchronized(obj) { while(!condition) { obj.wait(); } obj.doSomething(); } 当线程A获得了obj锁后,发现条件condition不满足,无法继续下一处理,于是...原创 2013-07-12 14:30:43 · 219 阅读 · 0 评论 -
Java通过Executors提供四种线程池
Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。...原创 2017-09-27 10:21:35 · 184 阅读 · 0 评论