![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java多线程
wan06092151
这个作者很懒,什么都没留下…
展开
-
【转】经典生产者消费者问题实现 多线程实现
package demo.thread; /** *经典生产者与消费者问题:生产者不断的往仓库中存放产品,消费者从仓库中消费产品。 *其中生产者和消费者都可以有若干个。仓库容量有限,库满时不能存放,库空时不能取产品 */ public class ProducersAndConsumers { public stat...原创 2012-10-24 21:50:03 · 74 阅读 · 0 评论 -
Future
如果想获取某一线程执行后的结果, 则使用Callable(类似于Runnable), Future(表示一个任务的生命周期, 并提供了相应的方法判断是否已经完成或取消, 以及任务的执行结果) package com.test;import java.util.ArrayList;import java.util.List;import java.util.concurr...原创 2013-04-28 00:10:14 · 61 阅读 · 0 评论 -
正确理解ThreadLocal
一般用法:class Test{public static ThreadLocal test = new ThreadLocal();public static String getThreadLocalTest(){ return test.get();} public static void setThreadLocalTest(String value){...原创 2013-05-13 00:25:39 · 177 阅读 · 0 评论 -
Java并发编程实战-学习笔记
第3章 对象的共享3.1、可见性可见性概念:在多个线程对一个变更操作时, 其中一个线程将变量修改后,其他线程在读取该变量的时候,得到的是修改后的值(即最新的值)。因此为确保多个线程之间对内存写入操作的可见性,必须使用同步机制。 3.1.1、失效数据在多线程中,当没有同步机制时,某一线程取的数据可能是失效的数据(即该线程先取出变量,但后来被其他线程修改了,但是该线程没有被通...原创 2012-12-01 22:54:44 · 230 阅读 · 0 评论 -
Java线程中sleep和wait的区别
sleep和wait的相同点:都是让当前线程暂停一段时间,但是本质的区别是sleep()是当前线程的运行状态控制,wait()是线程之间的通讯的问题 sleep和wait的区别有: 1,这两个方法来自不同的类分别是Thread和Object 2,最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。 3,wait,notify...原创 2012-12-08 19:44:45 · 75 阅读 · 0 评论 -
浅谈多线程中的同步锁
转:http://wenjuema.iteye.com/blog/660705 多线程应用中,我们往往会对同一对象或类进行操作,这时我们需要应用同步锁,以保证程序的正常运行。本文将从Synchronized, wait, notify这些Java常见的关键字/函数作为出发点,总结同步与锁的问题,适合Java初级者阅读解惑。 一. synchronized关键字。 为啥同步...原创 2012-12-08 19:48:51 · 141 阅读 · 0 评论 -
Java Thread 多线程同步、锁、通信
http://www.cnblogs.com/hoojo/archive/2011/05/05/2038101.html原创 2012-12-08 19:49:18 · 83 阅读 · 0 评论 -
多线程-并发的概念,synchronize wait notify 的用法
转自:http://blog.csdn.net/weizhaozhe/article/details/3922647注:wait notify 都是Object的方法 同步(阻塞) :是一种防止对共享资源访问导致的数据不一致的一种模式。详细请参看操作系统。 在Java中,由于对多线程的支持,对同步的控制主要通过以下几个方法,synchronized,和wait(),n...原创 2012-12-08 19:49:46 · 198 阅读 · 0 评论 -
CountDownLatch 简介和例子
在一些应用场合中,某段程序需要等待某个条件达到要求后才能执行,或者等待一定长的时间后执行 CountDownLatch类是一个同步倒数计数器,构造时传入int参数,该参数就是计数器的初始值,每调用一次countDown()方法,计数器减1,计数器大于0 时,await()方法会阻塞后面程序执行,直到计数器为0,await(long timeout, TimeUnit unit),是等待...原创 2013-01-05 18:35:49 · 69 阅读 · 0 评论 -
Spring ThreadPoolTaskExecutor 创建线程池管理
http://www.blogjava.net/lukangping/articles/332806.html http://blog.csdn.net/seminmredoxu/article/details/7000709 http://blog.csdn.net/sfdev/article/details/4056114原创 2013-01-05 18:41:51 · 84 阅读 · 0 评论 -
Thread守护线程
概念Java有两种Thread:守护线程、用户线程用户线程:程序员自己创建的线程,默认为用户线程, Java虚拟机在所有用户线程执行完后自动结束守护线程:JVM后台线程, 为用户线程服务的, 程序员可以创建守护线程, JVM也有守护线程, 如:垃圾回收线程(是为用户线程提供服务的), 当用户线程都执行完后, 守护线程也要结束, 随着JVM结束! Thread.setDae...原创 2013-01-17 15:16:47 · 123 阅读 · 0 评论 -
原子变量与原子类
Java多线程(二)之Atomic:原子变量与原子类原创 2013-07-15 14:36:21 · 81 阅读 · 0 评论 -
Java偏向锁实现原理(Biased Locking)
Java偏向锁实现原理(Biased Locking)原创 2013-12-18 23:12:36 · 144 阅读 · 0 评论 -
多线程
http://www.cnblogs.com/hoojo/archive/2011/05/05/2038111.html原创 2014-02-15 20:44:19 · 66 阅读 · 0 评论 -
进程与线程的一个简单解释
进程与线程的一个简单解释原创 2014-07-09 00:39:23 · 85 阅读 · 0 评论 -
聊聊并发(一)——深入分析Volatile的实现原理
聊聊并发(一)——深入分析Volatile的实现原理原创 2013-09-12 00:40:25 · 106 阅读 · 0 评论 -
用实例揭示notify()和notifyAll()的本质区别
用实例揭示notify()和notifyAll()的本质区别原创 2014-04-15 08:43:34 · 181 阅读 · 0 评论 -
ThreadPoolExecutor
ThreadPoolExecutor线程池 ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别原创 2013-04-27 23:40:14 · 75 阅读 · 0 评论 -
BlockingQueue深入分析
http://jiangzhengjun.iteye.com/blog/683593 http://blog.csdn.net/a511596982/article/details/8247564原创 2013-04-27 23:18:39 · 63 阅读 · 0 评论 -
java线程组
线程组:线程组存在的意义,首要原因是安全。java默认创建的线程都是属于系统线程组,而同一个线程组的线程是可以相互修改对方的数据的。但如果在不同的线程组中,那么就不能“跨线程组”修改数据,可以从一定程度上保证数据安全。线程池:线程池存在的意义,首要作用是效率。线程的创建和结束都需要耗费一定的系统时间(特别是创建),不停创建和删除线程会浪费大量的时间。所以,在创建出一条线程并使其在执行完任务后不结束...原创 2013-04-27 00:30:46 · 179 阅读 · 0 评论 -
Java Thread 多线程
使用Java多线程编程很容易, 有两种方法, 两种方法总是实现接口java.lang.Runnable。 方法一: 创建一个类实现接口Runnable, 创造该类的实例作为参数传给Thread构造函数, 创造Thread实例.public class ThreadTest implements Runnable { public void run() { S...原创 2012-03-09 23:34:47 · 134 阅读 · 0 评论 -
Java多线程发展简史
Java多线程发展简史http://www.raychase.net/698原创 2012-10-29 21:25:57 · 124 阅读 · 0 评论 -
【转】Java线程池的原理及几类线程池的介绍
刚刚研究了一下线程池,如果有不足之处,请大家不吝赐教,大家共同学习、共同交流。在什么情况下使用线程池?单个任务处理的时间比较短将需处理的任务的数量大使用线程池的好处:减少在创建和销毁线程上所花的时间以及系统资源的开销如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以及”过度切换”。线程池工作原理:为什么要用线程池?诸如 Web 服务器...原创 2012-10-30 22:41:04 · 66 阅读 · 0 评论 -
Java多线程共享数据问题
两个人分别用银行卡, 存折同时取钱,以下是代码,并执行:public class Test implements Runnable{ private int account=10;; public static void main(String[] args) { Test t=new Test(); Thread one=new Thread(t); ...原创 2013-03-21 02:32:08 · 127 阅读 · 0 评论 -
信号量
Java线程:新特征-信号量 Java的信号量实际上是一个功能完毕的计数器,对控制一定资源的消费与回收有着很重要的意义,信号量常常用于多线程的代码中,并能监控有多少数目的线程等待获取资源,并且通过信号量可以得知可用资源的数目等等,这里总是在强调“数目”二字,但不能指出来有哪些在等待,哪些资源可用。 因此,本人认为,这个信号量类如果能返回数目,还能知道哪些对象在等待,哪些资源可使...原创 2013-03-25 22:34:59 · 72 阅读 · 0 评论 -
java线程池Executor
http://www.iteye.com/topic/366591 http://www.open-open.com/lib/view/open1335829640968.html原创 2013-03-26 23:58:31 · 72 阅读 · 0 评论 -
Java线程中断的本质和编程原则
在历史上,Java试图提供过抢占式限制中断,但问题多多,例如前文介绍的已被废弃的Thread.stop、Thread.suspend和 Thread.resume等。另一方面,出于Java应用代码的健壮性的考虑,降低了编程门槛,减少不清楚底层机制的程序员无意破坏系统的概率。 如今,Java的线程调度不提供抢占式中断,而采用协作式的中断。其实,协作式的中断,原理很简单,就是轮询某个表示中...原创 2013-03-29 00:06:41 · 65 阅读 · 0 评论 -
Java线程同步机制synchronized关键字的理解
由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问。 需要明确的几个问题: 1)synchronized关键字可以作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句块。如果再细的分类,synchronized可作用于instance变量、o...原创 2013-03-29 10:49:11 · 115 阅读 · 0 评论 -
Servlet线程安全问题
Servlet体系结构是建立在Java多线程机制之上的,它的生命周期是由Web容器负责的。 当客户端第一次请求某个Servlet时,Servlet容器将会根据web.xml配置文件实例化这个Servlet类。当有新的客户端请求该Servlet时,一般不会再实例化该Servlet类,也就是有多个线程在使用这个实例, 因此servlet是单实例多线程。 这样的话,当两个或多个线程同时访问同...原创 2012-11-04 15:16:01 · 66 阅读 · 0 评论 -
多线程
线程安全:一个类是安全的, 是指在被多个线程访问时, 类可以持续进行正确的行为。无状态对象:不包含域,也没有引用其他类的域,因此不会在多线程的并发访问的时候,线程之间没有共享变量(域),各线程的执行是相互不影响的, 所以无状态对象永远是线程安全的的。 synchronized:将修饰的代码块, 或方法加锁, 执行完后, 锁自动放开, synchronized修饰的语句块,尽可能小,...原创 2012-11-04 15:19:39 · 56 阅读 · 0 评论 -
Struts1 、Struts2的action 线程安全
Struts1: 当第一次*.do请求过来时,在内存中的actionmapping中找到相对应的action,然后new出这个action放在缓存中,当第二次一样的请求过来时,还是找这个action,所以对于struts1来说,action是单实例的 ,只有一个,如果在action中定义变量,就要非常小心了,因为并发问题,可能带来灾难性的后果,也不是不可以,我们可以加锁达到...原创 2012-11-04 15:46:06 · 64 阅读 · 0 评论 -
java volatile 与 synchronized的区别
在使用volatile关键字时要慎重,并不是只要简单类型变量使用volatile修饰,对这个变量的所有操作都是原来操作,当变量的值由自身的上一个决定时,如n=n+1、n++等,volatile关键字将失效,只有当变量的值和自身上一个值无关时对该变量的操作才是原子级别的,如n = m + 1,这个就是原子级别的。所以在使用volatile关键时一定要谨慎,如果自己没有把握,可以使用synchroni...原创 2012-11-04 17:44:39 · 60 阅读 · 0 评论 -
【转】action,servlet单实例线程安全问题
一,servlet容器如何同时处理多个请求。Servlet采用多线程来处理多个请求同时访问,Servelet容器维护了一个线程池来服务请求。线程池实际上是等待执行代码的一组线程叫做工作者线程(Worker Thread),Servlet容器使用一个调度线程来管理工作者线程(Dispatcher Thread)。当容器收到一个访问Servlet的请求,调度者线程从线程池中选出一个工作者...原创 2012-11-05 09:46:59 · 67 阅读 · 0 评论 -
Java线程池
线程池的作用: 线程池作用就是限制系统中执行线程的数量。 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费了系统资源,多了造成系统拥挤效率不高。用线程池控制线程数量,其他线程排队等候。一个任务执行完毕,再从队列的中取最前面的任务开始执行。若队列中没有等待进程,线程池的这一资源处于等待。当一个新任务需要运行时,如果线程池中有等待的工作线程,就可以开始运...原创 2012-11-09 09:45:42 · 80 阅读 · 0 评论 -
Java 线程池学习
Java 线程池学习原创 2013-04-25 00:39:36 · 88 阅读 · 0 评论 -
Java Thread join() 的用法
Java Thread join() 的用法原创 2013-04-25 00:58:39 · 78 阅读 · 0 评论 -
Callable和Future
Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到,也就是说,Future可以拿到异步执行任务的返回值,下面来看一个简单的例子: [java] view plaincopy public c...原创 2014-04-21 08:09:15 · 80 阅读 · 0 评论