
多线程编程
Defonds
Arcsoft云服务部门视频流服务产品技术经理。多年一线Java Web开发经历,专注高性能Web服务、Web项目架构设计。熟悉权限设计、服务集群、安全防御、设计模式、多线程并发编程、JVM内存管理、项目管理等Web开发所涉及领域以及各种开源Web开源框架,还做过一年JavaMobile开发,熟悉多个J2ME开源框架
展开
-
Java 多线程编程之五:一个理解 wait() 与 notify() 的例子
一个理解 wait() 与 notify() 的例子 下面是我原来在 优快云 论坛上看到的一个贴子,涉及到同步, wait(), notify() 等概念的理解,我试着根据原来的一些回复和 Think in Java 上的相关概念将 wait() 和 notify() 这两个方法剖析了一下,欢迎指教。 问题如下: //分析这段程序,并解释一下,着重讲讲synchronized、转载 2009-12-02 13:23:00 · 6420 阅读 · 3 评论 -
Java 并发工具包 java.util.concurrent 用户指南
1. java.util.concurrent - Java 并发工具包Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包。这个包包含有一系列能够让 Java 的并发编程变得更加简单轻松的类。在这个包被添加以前,你需要自己去动手实现自己的相关工具类。本文我将带你一一认识 java.util.concurrent 包里的这些类,然后你可以尝试着如何在项目中翻译 2015-03-03 09:40:29 · 185185 阅读 · 36 评论 -
Java 理论和实践:线程池和工作队列
使用线程池以获取最佳资源利用率Java 多线程编程论坛中最常见的一个问题就是各种版本的 "我怎么样才可以创建一个线程池?" 几乎在每个服务器应用里,都会出现关于线程池和工作队列的问题。本文中,Brian Goetz 就线程池原理、基本实现和调优技术、需要避开的一些常见误区等方面进行共享。为何要用线程池?有很多服务器应用,比如 Web 服务器,数据库服务器,文件服务器,或者邮件服务器,都会面对处理大翻译 2015-02-13 19:08:08 · 6577 阅读 · 0 评论 -
如何决定 Web 应用的线程池大小
在部署 web 应用到生产环境,或者在对 web 应用进行性能测试的时候,经常会有人问:如何决定 web 应用线程池大小?决定一个 IO 阻塞型 web 应用的线程池大小是一项很艰巨的任务。通常是通过进行大量的性能测试来完成。在一个 web 应用中同时拥有多个线程池会让决定最优线程池大小的过程变得更加复杂。本文将就这个常见的问题进行一些讨论和建议。线程池web 应用中的线程池大小决定了在指定时间内翻译 2015-02-15 15:14:54 · 6060 阅读 · 1 评论 -
使用 Java 执行器实现线程池
在做一个 JSR 315 - servlet 规范 3.0 的报告时,我意识到理解异步 servlet 的一个关键点在于首先要理解 Java 中的异步处理机制。有因有果,很快我陷入了执行器(Executor)和执行器服务(ExecutorService)之中 - 因为它们是 Java 的异步处理的关键构件。在本博客中我将就这一主题我对掌握到的东西做一个总结。几个概念任务:定义为一个小的独立的活动,翻译 2015-02-12 16:53:04 · 3133 阅读 · 0 评论 -
关于 Tomcat 的线程池的理解
默认配置下,Tomcat 会为每个连接器创建一个绑定的线程池(最大线程数 200)。在大多数情况下你不需要改这个配置(除非增大最大线程数以满足高负载需要)。但是 Tomcat 喜欢在每个工作者线程的 thread-local 上下文缓存一些诸如 PageContext 以及标签缓存的对象。正因如此,就会有你期望 Tomcat 能够将线程关掉以清理出来一些内存的情况。此外,每个连接器维护自己的线程池翻译 2015-02-11 16:33:27 · 6201 阅读 · 1 评论 -
设计模式实战应用之二:观察者模式
观察者模式的定义 观察者模式是应用最普遍的设计模式之一。著名的 MVC 模式就是观察者模式的应用之一。Gof 把观察者模式归类到对象行为型模式,《设计模式:可复用面向对象软件的基础》对观察者模式做出了明确的定义:“Define a one-to-many dependency between objects so that when one object changes st原创 2013-12-04 18:42:45 · 7362 阅读 · 1 评论 -
Java 多线程编程之八:多线程的调度
本博客是“Java 多线程编程”系列的后续篇。“Java 多线程编程”系列其他博客请参阅本博客结尾部分。 有多个线程,如何控制它们执行的先后次序? 方法一:设置线程优先级。 java.lang.Thread 提供了 setPriority(int newPriority) 方法来设置线程的优先级,但线程的优先级是无法保障线程的执行次序的,优先级原创 2013-03-12 18:08:52 · 14564 阅读 · 0 评论 -
Java 多线程编程之九:使用 Executors 和 ThreadPoolExecutor 实现的 Java 线程池的例子
线程池用来管理工作线程的数量,它持有一个等待被执行的线程的队列。 java.util.concurrent.Executors 提供了 java.util.concurrent.Executor 接口实现来创建 Java 里的线程池。我们写一个简单的程序来解释一下它的工作机制。 首先我们需要有一个 Runnable 类。 WorkerThrea翻译 2013-08-02 12:39:39 · 28973 阅读 · 0 评论 -
Java 调用 FFMPEG 命令时用 url 作为输入源,Linux 下出现 “no such file or directory” 问题的解决
Windows 下执行 ffmpeg 命令, D:/tools/ffmpeg/bin>ffmpeg.exe -i "某视频文件下载URL" -f flv D:/1.flv 可以成功直接将下载链接输入源转为 1.flv。String raw2flvCmd = "D:/tools/ffmpeg/bin/ffmpeg.exe -i \"某视频文件下载URL\"原创 2013-04-28 15:27:22 · 20091 阅读 · 17 评论 -
Java 多线程编程之三:synchronized 关键字的使用
Java 多线程编程之三:synchronized 关键字的使用 带有 synchronized 关键字的方法代表这个方法加锁。恰当而又灵活地运用 synchronized 关键字,是多线程编程的必修课。 1、synchronized关键字的作用域有二种: 1)是某个对象实例内,synchronized aMethod(){}可以防止多个线程同时访问这个对象的sy原创 2009-11-12 16:40:00 · 3532 阅读 · 0 评论 -
Java 多线程编程之六:线程之间的通信(附源代码)
Java 多线程编程之六:线程之间的通信(附源代码)源代码下载 多线程编程中,线程之间的通信是一个比较复杂的问题。大家往往搞不懂什么是竞争资源?什么时候考虑同步?怎么进行同步?什么是线程通信?怎么进行通信?很多朋友面试的时候都遇到过这样类似的一个编程题:给定一个场景,编写代码来恰当使用等待、通知和通知所有线程。相信很多朋友对java.lang.Object类的这三个方法都很熟悉原创 2010-01-26 11:48:00 · 7505 阅读 · 3 评论 -
Java 多线程编程之一 进程与线程,并发和并行的区别:吃馒头的比喻
进程与线程,并发和并行的区别:吃馒头的比喻 没有线程编程的程序好比一个人一只手干活,而多线程的程序就比一个人多之手干活.进程是系统资源分配的独立单位,而线程是可调度运行的独立单位,一个进程可以拥有多个线程,线程是进程并行完成的多个任务.并发和并行的区别就是一个处理器同时处理多个任务和多个处理器或者是多核的处理器同时处理多个不同的任务.前者是逻辑上的同时发生(simult原创 2009-10-22 08:04:00 · 7888 阅读 · 5 评论 -
Java 多线程编程之七:死锁(附源代码)
Java 多线程编程之七:死锁(附源代码)源代码下载 多线程编程中,线程死锁也是一个比较有趣的问题。然而死锁发生的可能性很小,正因如此,大家可能对此不是很熟悉。但是死锁并不是不重要,因为它确确实实存在着,随时会出现在我们的程序之中。很多朋友面试的时候都遇到过这样类似的一个编程题:使用 Java 写一个死锁。问题不是很难,但是由于大家现实中处理的比较少,还真难住了一部分人。本文原创 2010-01-26 15:21:00 · 7454 阅读 · 0 评论 -
Java 自带性能监控工具:监视和管理控制台 jconsole 的使用
想验证你对 jvm 配的一些调优参数有没有起作用吗?想不想实时监控你自定义的线程池的在实际运行时的线程个数、有没有死锁?想不想实时监控你的 Java 应用的堆内存使用情况,并根据峰值等数据设置最适合你的 Xms、Xmx 等参数?想不想找到你的应用的永久区 PermGen 的使用峰值,并根据其去设置合理的 XX:PermSize、XX:MaxPermSize 等参数?如何根据应用实时的运行运行情况合理配置年轻代(Young Generation,即 Eden 区和两个 Survivor 区之和)和年老代(Ol原创 2015-04-15 20:45:28 · 40233 阅读 · 5 评论