多线程
我爱大海V5
从事互联网工作
展开
-
中断线程
本文转自http://jiangzhengjun.iteye.com/blog/652269中断线程线程的thread.interrupt()方法是中断线程,将会设置该线程为中断状态,即设置为true。线程中断后的结果是死亡、还是等待新的任务或是继续运行至下一步,取决于这个程序本身。线程会不时地检测这个中断标识位,以判断线程是否应该被中断(中断标识值是否为true)。它并不像sto转载 2013-11-25 15:54:32 · 585 阅读 · 0 评论 -
java.util.concurrent.locks 接口 Condition
public interface ConditionCondition 将 Object 监视器方法(wait、notify 和notifyAll)分解成截然不同的对象,以便通过将这些对象与任意 Lock 实现组合使用,为每个对象提供多个等待 set(wait-set)。其中,Lock 替代了 synchronized 方法和语句的使用,Condition 替代了 Obje原创 2014-03-07 13:47:26 · 1139 阅读 · 0 评论 -
Java多线程学习——Condition的使用
Condition 将 Object 监视器方法(wait、notify 和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意 Lock 实现组合使用,为每个对象提供多个等待 set(wait-set)。其中,Lock 替代了synchronized 方法和语句的使用,Condition 替代了 Object 监视器方法的使用。 条件(也称为条件队列 或条件变原创 2014-03-07 11:22:01 · 653 阅读 · 0 评论 -
JAVA5多线程---Condition使用---线程通信
线程之间除了同步互斥,还要考虑通信。在Java5之前我们的通信方式为:wait 和 notify。那么Condition的优势是支持多路等待,就是我可以定义多个Condition,每个condition控制线程的一条执行通路。传统方式只能是一路等待。我们可以先分析下Java5 Api中的缓冲队列的实现:假定有一个绑定的缓冲区,它支持 put 和 take 方法。如果试图在空的缓冲区上执行t原创 2014-03-07 11:28:57 · 614 阅读 · 0 评论 -
ThreadLocal与synchronized
相关文章: 正确理解ThreadLocal ThreadLocal与synchronized推荐圈子: Pipboy 更多相关推荐 昨天上Java版块逛了一圈,一个2万5千人浏览的帖子引起了偶滴注意 ThreadLocal与synchronized ,9页以上的回复,足见大家对这个问题的兴趣。老实说,从看到这个帖子的题目开始,就觉得帖子的作者估计是在概念上有所混转载 2014-03-25 12:14:06 · 495 阅读 · 0 评论 -
ThreadLocal与synchronized再论
ThreadLocal与synchronized Java良好的支持多线程。使用java,我们可以很轻松的编程一个多线程程序。但是使用多线程可能会引起并发访问的问题。synchronized和ThreadLocal都是用来解决多线程并发访问的问题。大家可能对synchronized较为熟悉,而对ThreadLocal就要陌生得多了。 并发问题。当一个对象被两个线程同时访问时,可能有一个线程转载 2014-03-25 12:17:17 · 462 阅读 · 0 评论 -
简明扼要,再谈ThreadLocal和synchronized
昨天上Java版块逛了一圈,一个2万5千人浏览的帖子引起了偶滴注意 ThreadLocal与synchronized ,9页以上的回复,足见大家对这个问题的兴趣。 老实说,从看到这个帖子的题目开始,就觉得帖子的作者估计是在概念上有所混淆了,于是乎想写个咚咚,同大家分享一下自己的心得。 帖子上,讨论的人很多,高手不乏,各抒己见,但不知新手们看明白没有,因此,这里偶转载 2014-03-25 12:15:48 · 553 阅读 · 0 评论 -
深入研究java.lang.ThreadLocal类
深入研究java.lang.ThreadLocal类 一、概述 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一转载 2014-03-25 14:22:18 · 386 阅读 · 0 评论 -
java中关键字volatile的作用
用在多线程,同步变量。 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对A的访问其实访问的是B。只在某些动作时才进行A和B的同步。因此存在A和B不一致的情况。volatile就是用来避免这种情况的。volatile告诉jvm, 它所修饰的变量不保留拷贝,直接访问主内存中的(也就是上面说的A)=========================分割线1============原创 2014-08-20 09:56:23 · 443 阅读 · 0 评论 -
CyclicBarrier介绍
转载连接一:http://www.iteye.com/topic/980944 CyclicBarrier介绍 (一)一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用原创 2014-12-18 14:44:35 · 496 阅读 · 0 评论 -
Java并发之读写锁Lock和条件阻塞Condition的应用
Java 5中提供了另一种实现线程同步或互斥的机制,即使用Lock和Condition。Lock比传统线程模型中的synchronized方式更加面向对象,也提供了更多可选择的锁机制。与生活中的锁类似,锁本身也是一个对象。两个线程执行的代码片段要实现同步互斥的效果,它们必须使用同一个Lock对象。锁是上在代表要操作的资源的类的内部方法中,而不是线程代码中。 Lock使用示例原创 2014-03-07 11:38:57 · 693 阅读 · 0 评论 -
线程的sleep和wait的区别
Java中的多线程是一种抢占式的机制,而不是分时机制。抢占式的机制是有多个线程处于可运行状态,但是只有一个线程在运行Java中的多线程是一种抢占式的机制,而不是分时机制。抢占式的机制是有多个线程处于可运行状态,但是只有一个线程在运行。 共同点: 1. 他们都是在多线程的环境下,都可以在程序的调用处阻塞指定的毫秒数,并返回。 2. wait()和sleep()都可以通原创 2014-02-24 13:20:45 · 627 阅读 · 0 评论 -
并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法
在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需要选用阻塞队列或者非阻塞队列。注:什么叫线程安全?这个首先要明确。线程安全就是说多线程访问同一代码,不会转载 2013-12-02 18:25:47 · 924 阅读 · 0 评论 -
Java多线程-线程的同步(同步代码块)
对于同步,除了同步方法外,还可以使用同步代码块,有时候同步代码块会带来比同步方法更好的效果。追其同步的根本的目的,是控制竞争资源的正确的访问,因此只要在访问竞争资源的时候保证同一时刻只能一个线程访问即可,因此Java引入了同步代码快的策略,以提高性能。在上个例子的基础上,对oper方法做了改动,由同步方法改为同步代码块模式,程序的执行逻辑并没有问题。package thread转载 2013-12-02 13:46:28 · 642 阅读 · 0 评论 -
Java多线程-线程的同步(同步方法)
线程的同步是保证多线程安全访问竞争资源的一种手段。线程的同步是Java多线程编程的难点,往往开发者搞不清楚什么是竞争资源、什么时候需要考虑同步,怎么同步等等问题,当然,这些问题没有很明确的答案,但有些原则问题需要考虑,是否有竞争资源被同时改动的问题?在本文之前,请参阅《Java多线程-线程的同步与锁》,本文是在此基础上所写的。对于同步,在具体的Java代码中需要完成一下两个操作转载 2013-12-02 13:57:40 · 661 阅读 · 0 评论 -
Java多线程-线程的调度(让步)
线程的让步含义就是使当前运行着线程让出CPU资源,但是扔给谁不知道,仅仅是让出,线程状态回到可运行状态。线程的让步使用Thread.yield()方法,yield()为静态方法,功能是暂停当前正在执行的线程对象,并执行其他线程。代码如下:package thread;public class ThreadYield { public static void main(转载 2013-12-02 15:28:13 · 578 阅读 · 0 评论 -
Java多线程-线程的调度(优先级)
与线程休眠类似,线程的优先级仍然无法保障线程的执行次序。只不过,优先级高的线程获取CPU资源的概率较大,优先级低的并非没机会执行。线程的优先级用1-10之间的整数表示,数值越大优先级越高,默认的优先级为5。在一个线程中开启另外一个新线程,则新开线程称为该线程的子线程,子线程初始优先级与父线程相同。package thread;/** * 线程的调度(优先级) * *转载 2013-12-02 15:42:00 · 594 阅读 · 0 评论 -
java多线程-慎重使用volatile关键字
Java语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。public volatile boolean exit = false;在定义exit时,使用了一个Java关键字volatile,这个关键字的目的是使exit同步原创 2013-12-02 12:13:10 · 812 阅读 · 1 评论 -
Java多线程-线程的调度(合并)
线程的合并的含义就是将几个并行线程的线程合并为一个单线程执行,应用场景是当一个线程必须等待另一个线程执行完毕才能执行时可以使用join方法。join为非静态方法,定义如下:void join(): 等待该线程终止。 void join(long millis): 等待该线程终止的时间最长为 millis 毫秒。 void join(long millis, int nanos)转载 2013-12-02 14:46:38 · 700 阅读 · 0 评论 -
Java多线程-线程的调度(守护线程)
守护线程与普通线程写法上基本没啥区别,调用线程对象的方法setDaemon(true),则可以将其设置为守护线程。守护线程使用的情况较少,但并非无用,举例来说,JVM的垃圾回收、内存管理等线程都是守护线程。还有就是在做数据库应用时候,使用的数据库连接池,连接池本身也包含着很多后台线程,监控连接个数、超时时间、状态等等。setDaemon方法的详细说明:public final转载 2013-12-02 14:27:53 · 662 阅读 · 0 评论 -
Java多线程-线程的交互
一、线程交互的基础知识void notify():唤醒在此对象监视器上等待的单个线程。 void notifyAll():唤醒在此对象监视器上等待的所有线程。 void wait():导致当前的线程等待,直到其他线程调用此对象的 notify()方法或 notifyAll()方法。当然,wait()还有另外两个重载方法:void wait(long timeout):导致当转载 2013-12-02 15:56:02 · 643 阅读 · 0 评论 -
Java多线程-线程的生命周期
线程可以分为4个状态:New(新生),Runnable(可运行):为了方便分析,还可将其分为:Runnable与Running。blocked(被阻塞),Dead(死亡)。与人有生老病死一样,线程也同样要经历开始(等待)、运行、挂起和停止四种不同的状态。这四种状态都可以通过Thread类中的方法进行控制。下面给出了Thread类中和这四种状态相关的方法。// 开转载 2013-12-02 17:15:49 · 712 阅读 · 0 评论 -
Java多线程-新特征-阻塞栈LinkedBlockingDeque
Java多线程-新特征-阻塞栈LinkedBlockingDeque对于阻塞栈,与阻塞队列相似。不同点在于栈是“后入先出”的结构,每次操作的是栈顶,而队列是“先进先出”的结构,每次操作的是队列头。这里要特别说明一点的是,阻塞栈是Java6的新特征。、Java为阻塞栈定义了接口:java.util.concurrent.BlockingDeque,其实现类也比较多,具体可以查转载 2016-11-03 11:42:41 · 325 阅读 · 0 评论