- 浏览: 1164353 次
- 性别:
- 来自: nibiru
文章分类
- 全部博客 (407)
- lucene (1)
- java (147)
- j2se (1)
- javascript (2)
- spring (5)
- hibernate (1)
- mysql (1)
- oracle (10)
- 工作 (10)
- JPA (13)
- 网站 (5)
- xml (2)
- mina (3)
- 思想 (16)
- httpclient (10)
- JFreeChart (1)
- 多线程 (0)
- swing (2)
- socket (0)
- 网络 (3)
- protocol buffer (0)
- jmx (2)
- jboss/weblogic (1)
- flex3 (12)
- 设计模式 (1)
- apache (0)
- php (4)
- struts1&2 (2)
- oracle SOA (2)
- 微博短链接的生成算法(Java版本) (1)
- htmlparser (3)
- quartz (2)
- mail (1)
- 乱码 (2)
- txt (1)
- eclipse (7)
- 分类 (0)
- 数据库 (1)
- svn (1)
- 日志 (1)
- struts2 (4)
- jquery (2)
- 编码 (1)
- 路径,java (1)
- SOHO (1)
- 娱乐 (2)
- frameset (1)
- maven (1)
- 反射 (1)
- truts2 (1)
- 敏捷,scrum (1)
- OA (1)
- english (1)
- oralce (1)
- wampserver (1)
- 会计 (1)
- springmvc (1)
- js (1)
- CMA (1)
最新评论
-
ludabing:
[/color][color=yellow]
spring @component的作用 -
netwelfare:
EL表达式中null和empty的区别,可以看这篇文章:htt ...
EL表达式中empty的用法 -
wjs王结胜:
...
spring @component的作用 -
di1984HIT:
哈哈。真不错啊。~
微博短链接的生成算法(Java版本) -
di1984HIT:
不错,不错。。。
spring @component的作用
线程池是conncurrent包提供给我们的一个重要的礼物。使得我们没有必要维护自个实现的心里很没底的线程池了。但如何充分利用好这些线程池来加快我们开发与测试效率呢?当然是知己知彼。本系列就说说对cachedthreadpool使用的一下问题。<br> 下面是对cachedthreadpool的一个测试,程序有问题吗?
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><span style="color: #0000ff;">package</span><span style="color: #000000;"> net.blogjava.vincent;<br><br></span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.concurrent.blockingqueue;<br></span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.concurrent.executorservice;<br></span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.concurrent.executors;<br></span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.concurrent.futuretask;<br></span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.concurrent.threadpoolexecutor;<br></span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.concurrent.timeunit;<br><br></span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> cachedthreadpoolissue {<br><br> </span><span style="color: #008000;">/**</span><span style="color: #008000;"><br> * </span><span style="color: #808080;">@param</span><span style="color: #008000;"> args<br> </span><span style="color: #008000;">*/</span><span style="color: #000000;"><br> </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">static</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> main(string[] args) {<br> <br> executorservice es </span><span style="color: #000000;">=</span><span style="color: #000000;"> executors.newcachedthreadpool();<br> </span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> i </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">; i</span><span style="color: #000000;"><</span><span style="color: #000000;">8000</span><span style="color: #000000;">; i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br> es.submit(</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> task());<br><br> }<br><br>}<br></span><span style="color: #0000ff;">class</span><span style="color: #000000;"> task </span><span style="color: #0000ff;">implements</span><span style="color: #000000;"> runnable{<br><br> @override<br> </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> run() {<br> </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {<br> thread.sleep(</span><span style="color: #000000;">4000</span><span style="color: #000000;">);<br> } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (interruptedexception e) {<br> </span><span style="color: #008000;">//</span><span style="color: #008000;"> todo auto-generated catch block</span><span style="color: #008000;"><br></span><span style="color: #000000;"> e.printstacktrace();<br> }<br> <br> }<br> <br>}</span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><span style="color: #0000ff;">package</span><span style="color: #000000;"> net.blogjava.vincent;<br><br></span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.concurrent.blockingqueue;<br></span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.concurrent.executorservice;<br></span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.concurrent.executors;<br></span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.concurrent.futuretask;<br></span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.concurrent.threadpoolexecutor;<br></span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.concurrent.timeunit;<br><br></span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> cachedthreadpoolissue {<br><br> </span><span style="color: #008000;">/**</span><span style="color: #008000;"><br> * </span><span style="color: #808080;">@param</span><span style="color: #008000;"> args<br> </span><span style="color: #008000;">*/</span><span style="color: #000000;"><br> </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">static</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> main(string[] args) {<br> <br> executorservice es </span><span style="color: #000000;">=</span><span style="color: #000000;"> executors.newcachedthreadpool();<br> </span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> i </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">; i</span><span style="color: #000000;"><</span><span style="color: #000000;">8000</span><span style="color: #000000;">; i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br> es.submit(</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> task());<br><br> }<br><br>}<br></span><span style="color: #0000ff;">class</span><span style="color: #000000;"> task </span><span style="color: #0000ff;">implements</span><span style="color: #000000;"> runnable{<br><br> @override<br> </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> run() {<br> </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {<br> thread.sleep(</span><span style="color: #000000;">4000</span><span style="color: #000000;">);<br> } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (interruptedexception e) {<br> </span><span style="color: #008000;">//</span><span style="color: #008000;"> todo auto-generated catch block</span><span style="color: #008000;"><br></span><span style="color: #000000;"> e.printstacktrace();<br> }<br> <br> }<br> <br>}</span>
发表评论
-
DISCUE盖楼器
2013-10-24 13:34 1239package com.soft.hr.per.service ... -
svn文件影响编译速度解决办法
2011-11-05 10:06 1690在eclipse开发环境中正常编译java文件时,eclip ... -
项目经理,产品经理,架构师
2011-08-29 12:54 2035理想:产品经理设计出简单好用的产品,并能理解技术约束和 ... -
题目
2011-08-28 13:01 17内容22222222222222222222222222222 ... -
如何用QTP录制鼠标右键点击事件
2011-08-25 17:09 1683qtp录制鼠标右键单击事件要通过模拟键盘操作来实现st ... -
Eclipse中要导出jar包中引用了第三方jar包怎么办【】
2011-08-25 15:17 3591单击菜单栏中 ... -
面试题整理2
2011-08-25 12:13 722现有n个人和m个桌子.当每桌做3个人时,多出来2个人. ... -
java把下载html批量换成chm电子书
2011-08-25 10:11 1385利用微软的hhc.exe来把需要转换成chm的htm ... -
java用链表解约瑟夫环问题
2011-08-25 09:36 10841到20的数围成一个圈,隔两个取出一个,直到所有的数都 ... -
CKEditor用法
2011-08-25 09:23 1512config.js ckeditor.editor ... -
工作难题
2011-08-24 15:00 1154function showitem(oid,order ... -
Rational.Rose7.0系统软件
2011-08-24 14:13 3060ibm.rational.rose7.0系统软件01. ... -
[] 探索建立私人的科技资料检索系统
2011-08-23 10:42 1349由于经济条 ... -
一、Java字节代码的操纵
2011-08-22 14:54 634<address style="tex ... -
线程状态的换
2011-08-22 13:09 1008<div><div>scjp5 ... -
线程的调度—优先级
2011-08-22 12:53 1153<div>与线程休眠类似,线程的优先级仍然 ... -
类 Hibernate Session DBUtil
2011-08-22 12:16 1253package com.core.util;impor ... -
利用Annotation构建针对POJO进行增删改操作
2011-08-22 12:12 1154package com.core.annotation ... -
360 Or QQ
2011-08-22 08:48 1189前几天,360忽然跳 ... -
XML JAVA解析 -- DOM
2011-08-19 14:27 1342dom : document object model ...
相关推荐
在IT行业中,多线程技术是一项重要的编程技巧,特别是在处理并发任务时,它能显著提升程序的执行效率。本示例“多线程发邮件”就是利用了这一特性,通过并发执行多个邮件发送任务,来加快邮件的发送速度。下面我们将...
Java通过`Thread`类和`Runnable`接口提供了对多线程的支持。创建线程有两种方式:继承`Thread`类或实现`Runnable`接口。后者更常用,因为它可以避免单继承的限制,并且线程与业务逻辑解耦。 多线程设计模式包括但不...
在Java中,Java并发工具包(JUC,Java Concurrency Utilities)是处理多线程问题的核心组件,提供了丰富的类和接口,如`Thread`、`ExecutorService`、`Semaphore`、`CountDownLatch`、`CyclicBarrier`等,这些工具...
以下是对Java多线程面试题59题集合中可能涉及的一些关键知识点的详细解析。 1. **线程的创建方式** - 继承Thread类:创建一个新的类,该类继承自Thread类,并重写其run()方法。 - 实现Runnable接口:创建一个实现...
Java提供了一些线程安全的集合类,如Vector、ConcurrentHashMap、CopyOnWriteArrayList等,它们内部已经实现了线程同步,可以避免在多线程环境下出现数据一致性问题。 通过以上内容,初学者可以对Java多线程有一个...
在安卓开发中,多线程技术是至关重要的,它能够帮助...综上所述,"火山安卓多线程技术源码"可能包含了以上各种技术的实现,通过研究这些源码,开发者可以深入理解Android平台上的多线程编程,提高应用性能和用户体验。
本文将详细讲解Android中的多线程,包括AsyncTask、Thread、ExecutorService(FixedThreadPool、CachedThreadPool、SingleThreadExecutor)以及如何在主线程中安全地更新UI。 首先,Android应用的主线程,也被称为...
Java多线程编程是Java开发中的...在"Java多线程编程核心技术_完整版.pdf"这本书中,可能涵盖了上述所有内容,深入探讨了Java多线程编程的各个方面,包括理论、实践案例和最佳实践,帮助开发者熟练掌握这一重要技术。
在深入探讨Java多线程与并发库的高级应用之前,我们首先需要回顾一下Java多线程的基础概念和技术要点。 ##### 1.1 线程的概念 在计算机科学中,线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是...
此外,死锁是多线程编程中常见的问题,当两个或更多的线程互相等待对方释放资源时就会发生。避免死锁的关键在于遵循死锁预防的四个条件:互斥、请求与保持、不剥夺和循环等待。Java提供了一些工具如jstack和VisualVM...
通过深入学习和实践这些Java多线程设计模式,开发者可以更好地理解和掌握多线程环境下的编程技巧,提高程序的并发性能和稳定性。在实际开发中,应根据具体需求选择合适的设计模式和并发工具,确保代码的正确性和高效...
Java 多线程(Synchronized+Volatile+JUC 并发工具原理+线程状态+CAS+线程池) Java 多线程是 Java 语言中的一...但是,多线程编程也存在一些挑战,如线程安全、死锁、饥饿等问题,因此需要小心设计和实施多线程程序。
本篇文章将深入探讨Java中的多线程编程,包括基本概念、实现方式以及常见问题和解决方案。 一、多线程基础 1.1 线程与进程 线程是操作系统分配CPU时间的基本单位,而进程则是一个独立的执行实体,拥有自己的内存...
Java多线程开发是Java开发中的重要组成部分,尤其在高并发场景下,合理地使用多线程技术可以显著提升程序的执行效率。然而,多线程编程也伴随着一系列挑战,如资源管理、线程安全、任务调度等。以下是对标题和描述中...
4. **简单多线程模型** 虽然可以并行处理多个连接,但随着连接数增加,创建和销毁线程的开销也会增大,可能造成服务器性能下降。 5. **线程池模型** 线程池提供了一种线程复用机制,固定数量的线程等待任务,如...
Java多线程是Java编程中的核心概念,尤其在面试中,它...通过解答这些题目,开发者能深入理解Java多线程的原理,并具备解决实际问题的能力。对于准备Java面试或提升编程能力的人员来说,这68道题无疑是极好的学习材料。
JAVA多线程示例代码,包括:Runable、Thread、Callable,以及Lock锁和Synchronized锁的多种添加方式,还有四种线程池:CachedThreadPool、FixedThreadPool、ScheduledThreadPool、SingleThreadExecutor示例,里面都有...
通过以上内容的学习,读者可以深入了解Java线程的高级使用方法,掌握如何在Java程序中高效地管理和控制线程,以及如何解决多线程环境下常见的问题。这对于开发高性能、高可用性的Java应用至关重要。
总之,理解和掌握多线程与线程池技术是Java程序员必备的技能,这不仅对面试有帮助,更是提升实际项目性能的关键。通过深入学习这些技术,可以更好地应对高并发环境下的挑战,为软件开发带来更高的效率和可靠性。
4. **线程安全**:线程安全意味着在多线程环境下,一段代码的执行不会导致数据不一致或异常。例如,Vector类是线程安全的,因为它使用了同步方法,而ArrayList则不是。 5. **线程池**:线程池是一种预先创建的线程...