线程
qjbagu
这个作者很懒,什么都没留下…
展开
-
Java多线程编程基础之线程对象
在进入java平台的线程对象之前,基于基础篇(一)的一些问题,我先插入两个基本概念。 [线程的并发与并行] 在单CPU系统中,系统调度在某一时刻只能让一个线程运行,虽然这种调试机制有多种形式(大多数是时间片轮巡为主),但无论如何,要通过不断切换需要运行的线程让其运行的方式就叫并发(concurrent)。而在多CPU系统中,可以让两个以上的线程同时运行,这种可以同时让两个以上线转载 2011-11-19 16:07:59 · 485 阅读 · 0 评论 -
Java线程(五):线程池
自JDK5之后,Java推出了一个并发包,java.util.concurrent,在Java开发中,我们接触到了好多池的技术,String类的对象池、Integer的共享池、连接数据库的连接池、Struts1.3的对象池等等,池的最终目的都是节约资源,以更小的开销做更多的事情,从而提高性能。 我们的web项目都是部署在服务器上,浏览器端的每一个request就是一个线程,那么服转载 2012-04-13 00:27:03 · 374 阅读 · 0 评论 -
Java线程阻塞
阻塞指的是暂停一个线程的执行以等待某个条件发生(如某资源就绪),学过操作系统的同学对它一定已经很熟悉了。Java 提供了大量方法来支持阻塞,下面让我们逐一分析。 1. sleep() 方法:sleep() 允许 指定以毫秒为单位的一段时间作为参数,它使得线程在指定的时间内进入阻塞状态,不能得到CPU 时间,指定的时间一过,线程重新进入可执行状态。 典型地,sleep() 被转载 2012-04-13 00:29:29 · 414 阅读 · 0 评论 -
Java线程(六):Callable和Future
接着上一篇继续并发包的学习,本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。 Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到,也就是说,Future可以拿到异步执行任务转载 2012-04-13 00:28:03 · 606 阅读 · 0 评论 -
Java线程(三):线程协作-生产者/消费者模式
上一篇讲述了线程的互斥(同步),但是在很多情况下,仅仅同步是不够的,还需要线程与线程协作(通信),生产者/消费者模式是一个经典的线程同步以及通信的模型。 假设有这样一种情况,有一个盘子,盘子里只能放一个鸡蛋,A线程专门往盘子里放鸡蛋,如果盘子里有鸡蛋,则一直等到盘子里没鸡蛋,B线程专门从盘子里取鸡蛋,如果盘子里没鸡蛋,则一直等到盘子里有鸡蛋。这里盘子是一个互斥区,每次放鸡蛋是互斥转载 2012-04-13 00:25:15 · 519 阅读 · 0 评论 -
Java线程(四):Timer和TimerTask
Timer和TimerTask可以做为实现线程的第三种方式,前两中方式分别是继承自Thread类和实现Runnable接口。 Timer是一种线程设施,用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行,可以看成一个定时器,可以调度TimerTask。TimerTask是一个抽象类,实现了Runnable接口,所以具备了多线程的能力。 一个转载 2012-04-13 00:26:15 · 802 阅读 · 0 评论 -
Java线程(二):线程同步synchronized和volatile
上篇通过一个简单的例子说明了线程安全与不安全,在例子中不安全的情况下输出的结果恰好是逐个递增的,为什么会产生这样的结果呢,因为建立的Count对象是线程共享的,一个线程改变了其成员变量num值,下一个线程正巧读到了修改后的num,所以会递增输出。 要说明线程同步问题首先要说明Java线程的两个特性,可见性和有序性。多个线程之间是不能直接传递数据交互的,它们之间的交互只能通过共享变转载 2012-04-13 00:22:40 · 399 阅读 · 0 评论 -
Java线程(一):线程安全与不安全
作为一个Java web开发人员,很少也不需要去处理线程,因为服务器已经帮我们处理好了。记得大一刚学Java的时候,老师带着我们做了一个局域网聊天室,用到了AWT、Socket、多线程、I/O,编写的客户端和服务器,当时做出来很兴奋,回学校给同学们演示,感觉自己好NB,呵呵,扯远了。上次在百度开发者大会上看到一个提示语,自己写的代码,6个月不看也是别人的代码,自己学的知识也同样如此,学完的知识如果转载 2012-04-13 00:21:17 · 425 阅读 · 0 评论 -
java concurrent 探秘
java concurrent 探秘我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,当然也有一些开源的框架提供了这些功能,但是这些依然没有JDK自带的功能使用起来方便。而当针对高质量Java多线程并发程序设计时,为防止死蹦等现象的出现,比如使用java之前的wait()、notify()和synchronized等,每每需要考虑性能、死锁、公平转载 2012-02-17 11:16:43 · 544 阅读 · 0 评论 -
java线程中的若干重要方法
run():线程的执行逻辑start():启动线程yield():暂定线程的执行,允许其它线程竞争CPU,常用于具有同等优先级的线程之间的竞争,适用于不支持时间分片的操作系统之间的线程处理。sleep(long millis):线程休眠,暂停执行,但是不交出临界区的锁。stop():kill一个线程,但是通常通过线程内的循环条件来结束一个线程。setPriority(int w转载 2011-11-19 16:18:56 · 431 阅读 · 0 评论 -
java 多线程 停止线程
使用低版本的jdk时,自己编写线程池功能,停止线程的方法已经过时,下面介绍如何停止线程池中的线程: 如果您想要停止一个线程的执行,当您查看API时,您会发现Thread的stop()方法已经被标示为"deprecated",使用这个方法来停止一个线程是不被建议的。 如果您想要停止一个线程,您最好自行实作。 一个线程要进入Dead状态,就是执行完run()方法,简单的说,如果转载 2012-09-12 17:38:08 · 541 阅读 · 0 评论