java线程处理
文章平均质量分 59
keven
这个作者很懒,什么都没留下…
展开
-
SaaS平台上的多线程控制与故障处理
资深工程师Judith M. Myerson结合自己的实际经历,讲述了内部部署的 COBOL 程序成功地转化为基于 Java 的软件即服务 (SaaS) 应用程序,开发人员应该小心提防多线程问题。Judith提出了“多线程控制的模型云用户”概念:多线程阈值的用途就是设置某个任务可以并行执行的线程数限制。在达到阈值时,完成自己工作的线程可以从其他线程队列中获取工作。他分别原创 2013-08-26 02:58:46 · 514 阅读 · 0 评论 -
java线程安全总结
最近想将java基础的一些东西都整理整理,写下来,这是对知识的总结,也是一种乐趣。已经拟好了提纲,大概分为这几个主题: java线程安全,java垃圾收集,java并发包详细介绍,java profile和jvm性能调优 。慢慢写吧。本人jameswxx原创文章,转载请注明出处,我费了很多心血,多谢了。关于java线程安全,网上有很多资料,我只想从自己的角度总结对这方面的考虑,有时候写东西是很痛苦转载 2013-08-26 03:25:57 · 406 阅读 · 0 评论 -
JAVA多线程与并发学习总结
1. 计算机系统使用高速缓存来作为内存与处理器之间的缓冲,将运算需要用到的数据复制到缓存中,让计算能快速进行;当运算结束后再从缓存同步回内存之中,这样处理器就无需等待缓慢的内存读写了。缓存一致性:多处理器系统中,因为共享同一主内存,当多个处理器的运算任务都设计到同一块内存区域时,将可能导致各自的缓存数据不一致的情况,则同步回主内存时需要遵循一些协议。乱序执行优化:为了使得处理原创 2013-08-27 10:40:41 · 431 阅读 · 0 评论 -
java线程安全理解
java线程安全理解如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。比如一个 ArrayList 类,在添加一个元素的时候,它可能会有两步来完成:1. 在 Items[Size] 的位置存放此元素;2. 增大 Size 的值。 在单线程运行的情况下原创 2013-08-26 03:23:38 · 369 阅读 · 0 评论 -
浅谈Java多线程的同步问题
多线程的同步依靠的是对象锁机制,synchronized关键字的背后就是利用了封锁来实现对共享资源的互斥访问。下面以一个简单的实例来进行对比分析。实例要完成的工作非常简单,就是创建10个线程,每个线程都打印从0到99这100个数字,我们希望线程之间不会出现交叉乱序打印,而是顺序地打印。先来看第一段代码,这里我们在run()方法中加入了synchronized关键字,希望能对run方法进行互原创 2013-08-26 02:31:16 · 434 阅读 · 0 评论 -
Java 线程池
Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是ExecutorService。下面这张图完整描述了线程池的类体系结构。 标记一下比较重要的类:ExecutorService:真正的线程池接口。ScheduledExecutorService能和原创 2013-08-26 02:34:49 · 454 阅读 · 0 评论 -
JAVA线程池的分析和使用
1. 引言合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了如指掌。2. 线转载 2013-08-26 02:42:48 · 464 阅读 · 0 评论 -
Java深度历险(三)——Java线程:基本概念、可见性与同步
开发高性能并发应用不是一件容易的事情。这类应用的例子包括高性能Web服务器、游戏服务器和搜索引擎爬虫等。这样的应用可能需要同时处理成千上万个请求。对于这样的应用,一般采用多线程或事件驱动的架构。对于Java来说,在语言内部提供了线程的支持。但是Java的多线程应用开发会遇到很多问题。首先是很难编写正确,其次是很难测试是否正确,最后是出现问题时很难调试。一个多线程应用可能运行了好几天都没问题,然后突转载 2013-08-26 03:00:22 · 533 阅读 · 0 评论 -
Java 线程池的原理与实现
最近在学习线程池、内存控制等关于提高程序运行性能方面的编程技术,在网上看到有一哥们写得不错,故和大家一起分享。[分享]Java 线程池的原理与实现这几天主要是狂看源程序,在弥补了一些以前知识空白的同时,也学会了不少新的知识(比如 NIO),或者称为新技术吧。线程池就是其中之一,一提到线程,我们会想到以前《操作系统》的生产者与消费者,信号量,同步控制等等。一提到池,我们会转载 2013-08-26 02:36:12 · 359 阅读 · 0 评论 -
web性能优化14法则
Web 应用性能优化黄金法则:先优化前端程序 (front-end) 的性能,因为80% 或以上的最终用户响应时间的花费所在。法则 1. 减少 HTTP 请求次数80%的最终用户响应时间花在前端程序上,而其大部分时间则花在各种页面元素, 如图片、 样式表、 脚本和 Flash 等的下载上。 减少页面元素将会减少 HTTP 请求次数,是快速显示页面的关键所在。 一种减少页面元素个数的转载 2013-08-31 15:56:32 · 506 阅读 · 0 评论 -
深入理解Java内存模型(七)——总结
处理器内存模型顺序一致性内存模型是一个理论参考模型,JMM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照。JMM和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序一致性模型来实现处理器和JMM,那么很多的处理器和编译器优化都要被禁止,这对执行性能将会有很大的影响。根据对不同类型读/写操作组合的执行顺序的放松,可以把常见处理器的内存模型划分为下面几种类型:转载 2013-08-27 10:11:22 · 368 阅读 · 0 评论 -
深入理解Java内存模型(六)——final
与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则:在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。下面,我们通过一些示例性的代码来分转载 2013-08-27 10:09:33 · 467 阅读 · 0 评论 -
Java多线程知识点概括
一.Java中多线程的知识点有以下几个方面1.线程池。2.线程同步。3.线程间通信。4.线程安全。5.线程锁。6.线程销毁。7.线程生命周期。8.线程中断。原创 2013-08-26 03:13:39 · 593 阅读 · 0 评论 -
详细分析Java中断机制---线程
1. 引言当我们点击某个杀毒软件的取消按钮来停止查杀病毒时,当我们在控制台敲入quit命令以结束某个后台服务时……都需要通过一个线程去取消另一个线程正在执行的任务。Java没有提供一种安全直接的方法来停止某个线程,但是Java提供了中断机制。如果对Java中断没有一个全面的了解,可能会误以为被中断的线程将立马退出运行,但事实并非如此。中断机制是如何工作的?捕获或检测到中断后,是抛出Inte转载 2013-08-26 03:03:50 · 532 阅读 · 0 评论 -
深入理解Java内存模型(五)——锁
锁的释放-获取建立的happens before 关系锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。下面是锁释放-获取的示例代码:class MonitorExample { int a = 0; public synchronized void writer() { //1 a+原创 2013-08-26 02:48:47 · 467 阅读 · 0 评论 -
java间的线程通信
不同线程间进行通信通常有两种简单方法: 方法一 通过访问共享变量的方式(注:需要处理同步问题) 方法二 通过管道流 其中方法一有两种实现方法,即 方法一a)通过内部类实现线程的共享变量 代码如下: Java代码 /** * 通过内部类实现线程的共享变量 * */ public class Innersharethread {原创 2013-08-26 03:20:34 · 513 阅读 · 0 评论 -
Java -线程安全性
线程安全性:一个类是线程安全的是指在被多个线程访问时,类可以持续进行正确的行为.不用考虑这些线程运行时环境下的调度和交替.编写正确的并发程序的关键在于对共享的,可变的状态进行访问管理.解决方案有两种:1.控制资源访问.通过锁机制来对资源的访问进行排队.这样来避免一个线程修改其他线程正在使用的对象2.要确保当一个线程修改了对象的状态后,其他的线程能够真正知道这种变化.原创 2013-08-27 10:04:30 · 427 阅读 · 0 评论 -
深入理解Java内存模型(三)——顺序一致性
数据竞争与顺序一致性保证当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义如下:在一个线程中写一个变量,在另一个线程读同一个变量,而且写和读没有通过同步来排序。当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例正是如此)。如果一个多线程程序能正确同步,这个程序将是一个没有数据竞争的程序。JMM对正确同步的多线程程序的内存一转载 2013-08-27 10:07:29 · 440 阅读 · 0 评论 -
深入理解Java内存模型(四)——volatile
volatile的特性当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:class VolatileFeaturesExample { volatile long vl = 0L;转载 2013-08-27 10:08:52 · 467 阅读 · 0 评论 -
java线程池主线程等待子线程执行完成
原文:http://www.jiacheo.org/blog/262 Java如何等待子线程执行结束今天讨论一个入门级的话题, 不然没东西更新对不起空间和域名~~工作总往往会遇到异步去执行某段逻辑, 然后先处理其他事情, 处理完后再把那段逻辑的处理结果进行汇总的产景, 这时候就需要使用线程了.一个线程启动之后, 是异步的去执行需要执行的内容的, 不会影响主线程的流程, 往往需转载 2013-08-27 10:01:57 · 426 阅读 · 0 评论 -
深入理解Java内存模型(二)——重排序
数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:名称代码示例说明写后读a = 1;b = a;写一个变量之后,再读这个位置。写后写a = 1;a = 2;写一个变量之后,再写这个变量。读后写a转载 2013-08-27 10:06:21 · 476 阅读 · 0 评论 -
java并发面试题(一)基础
本文整理了常见的Java并发面试题,希望对大家面试有所帮助,欢迎大家互相交流。多线程java中有几种方法可以实现一个线程?如何停止一个正在运行的线程?notify()和notifyAll()有什么区别?sleep()和 wait()有什么区别?什么是Daemon线程?它有什么意义?java如何实现多线程之间的通讯和协作?锁什么是可重入锁(ReentrantLock)?当原创 2013-08-31 15:18:10 · 884 阅读 · 0 评论