摘要: ArrayList会比Vector快,他是非同步的,如果设计涉及到多线程,还是用Vector比较好一些 import java.util.*; public class VectorDemo{ public static void main(String[] args){//Vector的创... 阅读全文
posted @ 2014-11-04 15:25 Wishmeluck 阅读(117) 评论(0) 推荐(0) 编辑
摘要: Java线程:大总结 Java线程是Java语言中一个非常重要的部分,Java5之前,多线程的语言支持还是比较弱的,内容也较少,写一个复杂的多线程程序是相当有挑战性的。 在Java5以后,Java对多线程做了很多扩展,扩展部分称之为并发包。这部分内容大大增强了Java多线程编程的能力,通过使用... 阅读全文
posted @ 2014-11-04 15:00 Wishmeluck 阅读(77) 评论(0) 推荐(0) 编辑
摘要: Java线程:新特征-障碍器 Java5中,添加了障碍器类,为了适应一种新的设计需求,比如一个大型的任务,常常需要分配好多子任务去执行,只有当所有子任务都执行完成时候,才能执行主任务,这时候,就可以选择障碍器了。 障碍器是多线程并发控制的一种手段,用法很简单。下面给个例子: import ja... 阅读全文
posted @ 2014-11-04 14:59 Wishmeluck 阅读(110) 评论(0) 推荐(0) 编辑
摘要: Java线程:新特征-原子量 所谓的原子量即操作变量的操作是“原子的”,该操作不可再分,因此是线程安全的。 为何要使用原子变量呢,原因是多个线程对单个变量操作也会引起一些问题。在Java5之前,可以通过volatile、synchronized关键字来解决并发访问的安全问题,但这样太麻烦。Ja... 阅读全文
posted @ 2014-11-04 14:57 Wishmeluck 阅读(128) 评论(0) 推荐(0) 编辑
摘要: Java线程:新特征-条件变量 条件变量是Java5线程中很重要的一个概念,顾名思义,条件变量就是表示条件的一种变量。但是必须说明,这里的条件是没有实际含义的,仅仅是个标记而已,并且条件的含义往往通过代码来赋予其含义。 这里的条件和普通意义上的条件表达式有着天壤之别。 条件变量都实现了java... 阅读全文
posted @ 2014-11-04 14:56 Wishmeluck 阅读(124) 评论(0) 推荐(0) 编辑
摘要: Java线程:新特征-阻塞栈 对于阻塞栈,与阻塞队列相似。不同点在于栈是“后入先出”的结构,每次操作的是栈顶,而队列是“先进先出”的结构,每次操作的是队列头。 这里要特别说明一点的是,阻塞栈是Java6的新特征。、 Java为阻塞栈定义了接口:java.util.concurrent.Bloc... 阅读全文
posted @ 2014-11-04 14:55 Wishmeluck 阅读(113) 评论(0) 推荐(0) 编辑
摘要: Java线程:新特征-阻塞队列 阻塞队列是Java5线程新特征中的内容,Java定义了阻塞队列的接口java.util.concurrent.BlockingQueue,阻塞队列的概念是,一个指定长度的队列,如果队列满了,添加新元素的操作会被阻塞等待,直到有空位为止。同样,当队列为空时候,请求... 阅读全文
posted @ 2014-11-04 14:54 Wishmeluck 阅读(137) 评论(0) 推荐(0) 编辑
摘要: Java线程:新特征-信号量 Java的信号量实际上是一个功能完毕的计数器,对控制一定资源的消费与回收有着很重要的意义,信号量常常用于多线程的代码中,并能监控有多少数目的线程等待获取资源,并且通过信号量可以得知可用资源的数目等等,这里总是在强调“数目”二字,但不能指出来有哪些在等待,哪些资源可... 阅读全文
posted @ 2014-11-04 14:52 Wishmeluck 阅读(144) 评论(0) 推荐(0) 编辑
摘要: Java线程:新特征-有返回值的线程 在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写。或者干脆绕过这道坎,走别的路了。 现在Java终于有可返回值的任务(也可以叫做线程)了。 可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runn... 阅读全文
posted @ 2014-11-04 14:41 Wishmeluck 阅读(153) 评论(0) 推荐(0) 编辑
摘要: Java线程:新特征-线程池 Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Java5的新特征之一,除了线程池之外,还有很多多线程相关的内容,为多线程的编程带来了极大便利。为了编写高效稳定可靠的多线程程序,线程部分的新增内容显得尤为重要。 有关Java5线程新特征的内... 阅读全文
posted @ 2014-11-04 14:40 Wishmeluck 阅读(142) 评论(0) 推荐(0) 编辑
摘要: Java线程:volatile关键字 Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。 谈及到volatile关键字,... 阅读全文
posted @ 2014-11-04 14:38 Wishmeluck 阅读(117) 评论(0) 推荐(0) 编辑
摘要: Java线程:并发协作-死锁 线程发生死锁可能性很小,即使看似可能发生死锁的代码,在运行时发生死锁的可能性也是小之又小。 发生死锁的原因一般是两个对象的锁相互等待造成的。 在《Java线程:线程的同步与锁》一文中,简述死锁的概念与简单例子,但是所给的例子是不完整的,这里给出一个完整的例子。 ... 阅读全文
posted @ 2014-11-04 14:35 Wishmeluck 阅读(193) 评论(0) 推荐(0) 编辑
摘要: Java线程:并发协作-生产者消费者模型 对于多线程程序来说,不管任何编程语言,生产者和消费者模型都是最经典的。就像学习每一门编程语言一样,HelloWorld!都是最经典的例子。 实际上,准确说应该是“生产者-消费者-仓储”模型,离开了仓储,生产者消费者模型就显得没有说服力了。对于此模型,应... 阅读全文
posted @ 2014-11-04 14:33 Wishmeluck 阅读(189) 评论(0) 推荐(0) 编辑
摘要: Java线程:线程的调度-守护线程 守护线程与普通线程写法上基本么啥区别,调用线程对象的方法setDaemon(true),则可以将其设置为守护线程。 守护线程使用的情况较少,但并非无用,举例来说,JVM的垃圾回收、内存管理等线程都是守护线程。还有就是在做数据库应用时候,使用的数据库连接池,连... 阅读全文
posted @ 2014-11-04 14:27 Wishmeluck 阅读(161) 评论(0) 推荐(0) 编辑
摘要: Java线程:线程的调度-合并 线程的合并的含义就是将几个并行线程的线程合并为一个单线程执行,应用场景是当一个线程必须等待另一个线程执行完毕才能执行时可以使用join方法。 join为非静态方法,定义如下:void join() 等待该线程终止。 void join(lon... 阅读全文
posted @ 2014-11-04 14:25 Wishmeluck 阅读(185) 评论(0) 推荐(0) 编辑
摘要: Java线程:线程的调度-让步 线程的让步含义就是使当前运行着线程让出CPU资源,但是然给谁不知道,仅仅是让出,线程状态回到可运行状态。 线程的让步使用Thread.yield()方法,yield()为静态方法,功能是暂停当前正在执行的线程对象,并执行其他线程。 public class T... 阅读全文
posted @ 2014-11-04 14:23 Wishmeluck 阅读(197) 评论(0) 推荐(0) 编辑
摘要: Java线程:线程的调度-优先级 与线程休眠类似,线程的优先级仍然无法保障线程的执行次序。只不过,优先级高的线程获取CPU资源的概率较大,优先级低的并非没机会执行。 线程的优先级用1-10之间的整数表示,数值越大优先级越高,默认的优先级为5。 在一个线程中开启另外一个新线程,则新开线程称为该线... 阅读全文
posted @ 2014-11-04 14:21 Wishmeluck 阅读(164) 评论(0) 推荐(0) 编辑
摘要: Java线程:线程的调度-休眠 Java线程调度是Java多线程的核心,只有良好的调度,才能充分发挥系统的性能,提高程序的执行效率。 这里要明确的一点,不管程序员怎么编写调度,只能最大限度的影响线程执行的次序,而不能做到精准控制。 线程休眠的目的是使线程让出CPU的最简单的做法之一,线程休眠时... 阅读全文
posted @ 2014-11-04 13:03 Wishmeluck 阅读(140) 评论(0) 推荐(0) 编辑
摘要: Java线程:线程的交互 SCJP5学习笔记 线程交互是比较复杂的问题,SCJP要求不很基础:给定一个场景,编写代码来恰当使用等待、通知和通知所有线程。 一、线程交互的基础知识 SCJP所要求的线程交互知识点需要从java.lang.Object的类的三个方法来学习: void notify... 阅读全文
posted @ 2014-11-04 12:39 Wishmeluck 阅读(163) 评论(0) 推荐(0) 编辑
摘要: Java线程:线程的同步与锁 一、同步问题提出 线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。例如:两个线程ThreadA、ThreadB都操作同一个对象Foo对象,并修改Foo对象上的数据。 public class Foo{ private int x =1... 阅读全文
posted @ 2014-11-04 11:09 Wishmeluck 阅读(132) 评论(0) 推荐(0) 编辑