多线程
psiitoy
如果你最近过的不爽,很有可能是以下两个原因:1最近没怎么读书2最近没怎么体育锻炼。最不爽的时候,肯定是你既不怎么读书,又不怎么锻炼的时候。2014,多读书,多锻炼。
展开
-
Linux IO 多路复用是什么意思,一直没弄明白?
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:罗志宇链接:http://www.zhihu.com/question/32163005/answer/55772739来源:知乎这个还是很好说清楚的。假设你是一个机场的空管, 你需要管理到你机场的所有的航线, 包括进港,出港, 有些航班需要放到停机坪等待,有些航班需要去登机口接乘客。转载 2015-12-31 17:07:11 · 1304 阅读 · 0 评论 -
Java线程(五):Timer和TimerTask
Timer和TimerTask可以做为实现线程的第三种方式,前两中方式分别是继承自Thread类和实现Runnable接口。 Timer是一种线程设施,用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行,可以看成一个定时器,可以调度TimerTask。TimerTask是一个抽象类,实现了Runnable接口,所以具备了多线程的能力。转载 2014-08-15 15:40:37 · 344 阅读 · 0 评论 -
Java线程(六):线程池
自JDK5之后,Java推出了一个并发包,java.util.concurrent,在Java开发中,我们接触到了好多池的技术,String类的对象池、Integer的共享池、连接数据库的连接池、Struts1.3的对象池等等,池的最终目的都是节约资源,以更小的开销做更多的事情,从而提高性能。 我们的web项目都是部署在服务器上,浏览器端的每一个request就是一个线程,那转载 2014-08-15 15:12:20 · 347 阅读 · 0 评论 -
Java线程(七):Callable和Future
接着上一篇继续并发包的学习,本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。 Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到,也就是说,Future可以拿到异步执行转载 2014-08-14 18:07:48 · 386 阅读 · 0 评论 -
Java线程(八):锁对象Lock-同步问题更完美的处理方式
Lock是java.util.concurrent.locks包下的接口,Lock 实现提供了比使用synchronized 方法和语句可获得的更广泛的锁定操作,它能以更优雅的方式处理线程同步问题,我们拿Java线程(二)中的一个例子简单的实现一下和sychronized一样的效果,代码如下:[java] view plaincopypubl转载 2014-08-14 18:07:11 · 372 阅读 · 0 评论 -
struts2线程安全
问题:Struts 2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。Spring的Ioc容器管理的bean默认是单实例的,上一次请求处理的状态信息被保持下来,并影响了下一次的请求,实际上就是Action中的类变量被不同的请求读取,出现错误结果解决:就是不用单例, spring中bean的作用域设为prototype,每个请求对应一个实例.1、Struts转载 2014-08-26 17:10:23 · 448 阅读 · 0 评论 -
SpringMVC并发访问的线程安全性问题
转:http://windows9834.blog.163.com/blog/static/27345004201391045539953/springmvc的controller是singleton的(非线程安全的),这也许就是他和struts2的区别吧和Struts一样,Spring的Controller默认是Singleton的,这意味着每个request过来,系统都会用原有转载 2014-08-26 17:26:07 · 1369 阅读 · 0 评论 -
servlet 多线程问题
介绍了Servlet多线程机制,通过一个实例并结合Java 的内存模型说明引起Servlet线程不安全的原因,给出了保证Servlet线程安全的三种解决方案,并说明三种方案在实际开发中的取舍。 关键字:Servlet 线程安全 同步 Java内存模型 实例变量 Servlet/JSP技术和ASP、PHP等相比,由于其多线程运行而具有很高的执行效率。由于Servlet/JSP默转载 2014-08-26 15:48:13 · 403 阅读 · 0 评论 -
线程池的使用Executors和Future
在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于新的启动、调度、管理线程的一大堆API了。在Java5以后,通过Executor来启动线程比用Thread的start()更好。在新特征中,可以很容易控制线程的启动、执行和关闭过程,还可以很容易使用线程池的特性。 一、创建任务 任务就是一个实现了Runnable接口的类。 创建的时候实run方法即可。转载 2014-08-07 17:34:20 · 746 阅读 · 0 评论 -
Java线程池使用
前言:最近在做分布式海量数据处理项目,使用到了java的线程池,所以搜集了一些资料对它的使用做了一下总结和探究,前面介绍的东西大多都是从网上搜集整理而来。文中最核心的东西在于后面两节无界队列线程池和有界队列线程池的实例使用以及线上问题处理方案。 1. 为什么要用线程池? 在Java中转载 2014-08-15 16:25:47 · 490 阅读 · 0 评论 -
Java线程(一):线程安全与不安全
作为一个Java web开发人员,很少也不需要去处理线程,因为服务器已经帮我们处理好了。记得大一刚学Java的时候,老师带着我们做了一个局域网聊天室,用到了AWT、Socket、多线程、I/O,编写的客户端和服务器,当时做出来很兴奋,回学校给同学们演示,感觉自己好NB,呵呵,扯远了。上次在百度开发者大会上看到一个提示语,自己写的代码,6个月不看也是别人的代码,自己学的知识也同样如此,学完的知识如果转载 2014-08-15 15:42:42 · 417 阅读 · 0 评论 -
Java中Runnable和Thread的区别
在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限。AD:【线下活动】三大新锐HTML 5企业汇聚51CTO—大话移动前端技术在java中转载 2015-10-27 17:26:58 · 313 阅读 · 0 评论 -
java自带线程池和队列详细讲解
Java线程池使用说明一简介线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的。在jdk1.5之后这一情况有了很大的改观。Jdk1.5之后加入了java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用。为我们在开发中处理线程的问题提供了非常大的帮助。二:线程池线程池的作用:线程池作用就是转载 2015-11-05 17:20:29 · 427 阅读 · 0 评论 -
Java线程(四):线程中断、线程让步、线程睡眠、线程合并
本文来自:高爽|Coder,原文地址:http://blog.csdn.net/ghsau/article/details/17560467,转载请注明。 最近在Review线程专栏,修改了诸多之前描述不够严谨的地方,凡是带有Review标记的文章都是修改过了。本篇文章是插进来的,因为原来没有写,现在来看传统线程描述的不太完整,所以就补上了。理解了线程同步和线程通信之后,再来看本文转载 2014-10-27 18:02:41 · 412 阅读 · 0 评论 -
java Future 接口介绍
从jdk1.5开始我们可以利用Future来跟踪异步计算的结果。在此之前主线程要想获得工作线程(异步计算线程)的结果是比较麻烦的事情,需要我们进行特殊的程序结构设计,比较繁琐而且容易出错。有了Future我们就可以设计出比较优雅的异步计算程序结构模型:根据分而治之的思想,我们可以把异步计算的线程按照职责分为3类:1. 异步计算的发起线程(控制线程):负责异步计算任务的分解和发起,把分解好的转载 2014-08-15 15:58:35 · 536 阅读 · 0 评论 -
Java线程(三):线程协作-生产者/消费者问题
上一篇讲述了线程的互斥(同步),但是在很多情况下,仅仅同步是不够的,还需要线程与线程协作(通信),生产者/消费者问题是一个经典的线程同步以及通信的案例。该问题描述了两个共享固定大小缓冲区的线程,即所谓的“生产者”和“消费者”在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加转载 2014-08-15 15:43:12 · 425 阅读 · 0 评论 -
Java 线程池 ThreadPoolExecutor.(包含拒绝策略CallerRunsPolicy,AbortPolicy,DiscardPolicy,DiscardOldestPolicy )
JDK1.5 开始关于多线程加了很多特性。如:ConcurrentHashMap: 放弃使用公用锁同步每一个方法,使用了更细化的锁机制,分离锁。对于大数据量的HashMap 同步操作效率有了较大提升。CopyOnWriteArrayList: 是同步 List 的一个并发替代品。其线程安全性来源于这样一个事实:只要有效的不可变对象被正确发布,那么访问它将不再需要更多的同步。在每次需转载 2014-08-15 16:32:56 · 26302 阅读 · 1 评论 -
Java线程(二):线程同步synchronized和volatile
上篇通过一个简单的例子说明了线程安全与不安全,在例子中不安全的情况下输出的结果恰好是逐个递增的(其实是巧合,多运行几次,会产生不同的输出结果),为什么会产生这样的结果呢,因为建立的Count对象是线程共享的,一个线程改变了其成员变量num值,下一个线程正巧读到了修改后的num,所以会递增输出。 要说明线程同步问题首先要说明Java线程的两个特性,可见性和有序性。多个线程之间是转载 2014-08-15 15:44:12 · 341 阅读 · 0 评论 -
ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别
工作中多处接触到了ThreadPoolExecutor。趁着现在还算空,学习总结一下。 前记: jdk官方文档(javadoc)是学习的最好,最权威的参考。文章分上中下。上篇中主要介绍ThreadPoolExecutor接受任务相关的两方面入参的意义和区别,池大小参数corePoolSize和maximumPoolSize,BlockingQueue选型(Synch转载 2014-08-05 14:57:49 · 366 阅读 · 0 评论 -
理解ThreadLocal
ThreadLocal是什么早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。ThreadLocal很容易让人望文生义,想当然地认为是一个“本地线程”。其实,ThreadLocal并不是一个Thread,而是Thread的局部变量,也许把它转载 2014-06-13 10:03:42 · 387 阅读 · 0 评论 -
CountDownLatch与CyclicBarrier的区别
首先,CyclicBarrier可以多次使用,CountDownLatch只能用一次(为0后不可变) 其次, Barrier是等待指定数量线程到达再继续处理; Latch是等待指定事件变为指定状态后发生再继续处理,对于CountDown就是计数减为0的事件,但你也可以实现或使用其他Latch就不是这个事件了... Barrier是等待指定数量任务完成,Latch是等待其他任务完转载 2014-07-03 10:40:18 · 412 阅读 · 0 评论 -
java并发编程之ThreadPoolExecutor
包 java.util.concurrent.*[ 一 ]、常用线程池 最常用构造方法为:ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit转载 2014-04-08 11:38:44 · 633 阅读 · 0 评论 -
[分享]Java 线程池的原理与实现
------------------------------------------------------------------------------------------------这几天主要是狂看源程序,在弥补了一些以前知识空白的同时,也学会了不少新的知识(比如 NIO),或者称为新技术吧。线程池就是其中之一,一提到线程,我们会想到以前《操作系统》的生产者与消费者,信号量,同步转载 2013-11-27 19:39:11 · 502 阅读 · 0 评论 -
ExecutorService线程池
ExecutorService线程池(2010-08-03 14:37:13)转载▼标签:executor线程池杂谈分类:java和数据库ExecutorService建立多线程的步骤:1。定义线程类class Handler implements Runnable{}2。建立Exe转载 2013-12-17 21:42:45 · 463 阅读 · 0 评论 -
线程安全的误解: 线程安全并不是否定资源共享
线程安全的误解: 线程安全并不是否定资源共享(2010-08-04 17:36:48)转载▼标签:线程安全杂谈分类:java和数据库之所以造成这个误解,大概跟线程安全的几种解决手段有关.目前公认的几种线程安全的解决手段:同步技术多用方法内局部变量ThreadLocal技术(一线程,一实例变量copy)除同步转载 2013-12-17 22:00:08 · 438 阅读 · 0 评论 -
Java多线程(一)、多线程的基本概念和使用
Java多线程(一)、多线程的基本概念和使用一、进程和线程的基础知识1、进程和线程的概念进程:运行中的应用程序称为进程,拥有系统资源(cpu、内存)线程:进程中的一段代码,一个进程中可以有多段代码。本身不拥有资源(共享所在进程的资源)在java中,程序入口被自动创建为主线程,在主线程中可以创建多个子线程。区别: 1、是否占有资源问题 2、创建或撤销一个进程所需要的开转载 2014-01-09 14:05:10 · 916 阅读 · 0 评论 -
Java多线程(三)、线程同步
Java多线程(三)、线程同步分类: javaSE综合知识点 2012-09-18 17:59 564人阅读 评论(0)收藏 举报在之前,已经学习到了线程的创建和状态控制,但是每个线程之间几乎都没有什么太大的联系。可是有的时候,可能存在多个线程多同一个数据进行操作,这样,可能就会引用各种奇怪的问题。现在就来学习多线程对数据访问的控制吧。 由于同一进程的多个线转载 2014-01-09 16:18:49 · 639 阅读 · 0 评论 -
CountDownLatch用法
CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。主要方法 public CountDownLatch(int count); public void countDown(); public void await() throws InterruptedException 构造方法参数指定转载 2014-04-14 11:04:22 · 588 阅读 · 0 评论 -
java.util.concurrent.Future 类基础
java.util.concurrent.Future 类基础2013-02-26 09:23 Richard_sun oschina 我要评论(0) 字号:T | T在第一篇文章中,我们会讨论最基本的java.util.concurrent.Future 接口。 接下来我们会跳到其他的框架,库,甚至是语言。 Future是有限制的,但是有必要去理解future的部转载 2014-04-14 10:01:59 · 685 阅读 · 0 评论 -
Balking Pattern不需要就不用做
word自动保存功能,如果文档被修改了,后台线程每隔一段时间会自动执行保存功能,但是如果用户在自动保存之前用Ctrl+S手动保存呢?自动保存还会执行吗?答案是不会,因为这个操作时不需要重复做的。 public class BalkingTest { public static void main(String[] args) {转载 2014-05-21 14:55:57 · 632 阅读 · 0 评论 -
Java多线程设计模式系列
通过几天的认真阅读,发现这是一本难得一见的好书,为了加深巩固学习成功,我打算将书中的例子全部自己实现一遍,特此记录下来也方便其他朋友学习。 第一章,java语言的线程单线程程序:打印10000次good字符串public class SingleThreadSample { public static void main转载 2014-05-21 15:55:41 · 538 阅读 · 0 评论 -
CyclicBarrier介绍
CyclicBarrier介绍 (一)一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。CyclicBarrier 支持一个可选的 Runnabl转载 2014-06-27 17:51:05 · 456 阅读 · 0 评论 -
Future Parttern 先给你这张提货单
Future是未来,预期的意思,Thread-permessage模式是指将任务交给其他线程来做,但是如果想知道处理的结果,就要使用Future模式,它的典型应用时执行一个需要花一些时间的方法,会立即返回一个future提货单,然后调用方可以继续处理自己的业务逻辑,然后需要的时候再查看future是否返回,一直等到future结果已经处理完毕。thread-pre-message模式发送的转载 2014-05-21 16:08:31 · 557 阅读 · 0 评论 -
Two-phase Termination 把玩具收拾好再去睡觉。
字面翻译是“两阶段终止”,这个模式用来进行结束操作后,再终止线程。比如我们想停止一个线程,但是让他停止之前必须要做一些清理工作,这时候就需要用到two-phase termination模式。public class TwoPhaseTerminationTest { /** * @param args */ public static void转载 2014-05-21 16:14:10 · 561 阅读 · 0 评论 -
Single Thread Execution 能通过这座桥的只有一个人
直奔主题, Single Thread Execution也称作Critical Section(临界区),范例如下:public class SingleThreadGate { public static void main(String[] args) { System.out.println("ctrl +转载 2014-05-21 15:44:14 · 631 阅读 · 0 评论 -
Guarded Suspention 要等到我准备好
线程在运行过程中需要停下来等待,然后再继续执行。范例程序,一个线程(ClientThread)对另外一个线程(ServerThread)传递请求,实现一个模拟消息通道的功能。public class GuardedSuspensionTest { public static void main(String[] args) {转载 2014-05-21 15:34:44 · 464 阅读 · 0 评论 -
Producer-Consumer 生产者,消费者
这个模式跟Guarded模式有点类似,不过需要一个控制台限制请求方和处理方的频度和数量。public class ProducerConsumerTest { /** * @param args */ public static void main(String[] args) { Table table = new Table(3转载 2014-05-21 14:53:30 · 565 阅读 · 0 评论 -
Worker Thread等到工作来,来了就工作
Worker是“工人”的意思,worker thread pattern中,工人线程(worker thread)会一次抓一件工作来处理,当没有工作可做时,工人线程会停下来等待心得工作过来。Worker Thread也叫做background thread,另外,也有人把视点放在管理工人线程的地方,称之为Thread Pool。 public class WorkerT转载 2014-05-21 14:10:43 · 703 阅读 · 0 评论 -
Read-Write lock 看可以,不过看的时候不能写
当线程“读取”实例的状态时,实例的状态不会改变,只有线程对实例“写入”操作时才会改变。read-write lock 模式将读取和写入分开来处理,在读取数据前获取读锁定,而写入之前,必须获取写锁定。 public class ReadWriteThreadTest { public static void main(String[] args) { D转载 2014-05-21 14:38:00 · 778 阅读 · 0 评论 -
Java多线程(二)、线程的生命周期和状态控制
Java多线程(二)、线程的生命周期和状态控制分类: javaSE综合知识点 2012-09-10 16:11 2743人阅读 评论(1)收藏 举报一、线程的生命周期线程状态转换图:1、新建状态用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新生状态。处于新生状态的线程有自己的内存空间,通过调用start方法进入就绪转载 2014-01-09 15:14:08 · 651 阅读 · 0 评论