九.使用线程本地变量 一个并发程序的最关键特征就是共享数据.这个特性在那些继承了 Thread 类或者 实现了 Runnable 接口的对象上显得更加重要. 如果你创建一个实现了 Runnable 接口的对象,然后再使用多个 Thread 对象去运行这个相同 Runnable 对象,这样所有的 Thread 对象就会共享相同的属性.这意味着你在其中一个 Thread 对象中对属性做的修改会影响其他的 Thread 对象. 有时,你需要运行同一个 Runnable 对象的多个 Thread 对象都…
一.简介 在计算机的世界里,当我们谈论并发时,我们指的是一系列的任务同时运行于一个计算机中.这里说的同时运行,在计算机拥有多于一个处理器或者是一个多核处理器的时候才是真正的同时,在计算机只拥有单核处理器的时候,它指的是表面上的同时运行. 所有的现代操作系统都允许并发任务的执行.在听歌和阅读网页上新闻的同时,你还能阅读电子邮件.我们可以说这种类型的并发是进程级别的并发.但在一个进程内部,我们也可以拥有多个同时运行的任务.那些运行在一个进程中的并发任务被称作线程. 与并发相关的另一个概念是并行.它与…
十一.处理线程组中的未控制异常 每种编程语言一个很重要的特性就是其所提供的用来处理程序中错误情况的机制.Java语言和其他的现代语言一样,是提供了异常机制来处理对象程序中的错误.Java提供了很多的类来对应不同的错误.当Java检查到这些错误时,会抛出对应的异常对象.你可以直接使用那些异常类或者实现自己的异常类来处理程序中出项的错误情况. Java同时提供了捕获和处理异常对象的机制.异常必须被捕获或者重新抛出来.这类异常称为检测异常.还有一类异常不必捕获和处理,称为不检测异常. 在本秘诀中,我们…
七.创建和运行一个后台线程 Java中有一种特别的线程叫做 deamon(后台) 线程.这类线程具有非常低的权限,并且只有在同一个程序中没有其他的正常线程在运行时才会运行.注意:当一个程序中只剩下后台线程时,JVM会终结所有的后台线程并结束程序. 由于这个特性,后台线程一般用于为同一个程序中的其他正常线程提供服务.这种后台线程一般都有一个无限的循环在等待请求服务或者执行请求的任务.由于不知道它们何时可以获得CPU的调用执行,同时在没有其他正常线程的情况下会被JVM终结,所以后台线程不能用于执行重…
三.中断一个线程 一个拥有多个线程的Java程序要结束,需要满足两个条件之一:一是所有的非后台线程都执行结束了:二是某个线程执行了 System.exit() 方法.当你想要终结一个运行中的Java程序或者程序的用户想要取消一个线程正在执行的任务时,你都需要结束一个线程. Java提供中断机制来表明我们想要终止一个线程.这个机制的核心是线程必须要检查自己是否被中断,而且线程自己决定是否响应中断请求.线程可以忽略该中断请求而继续执行. 在本秘诀中,我们将开发一个程序,这个程序创建线程,5秒后使用中…
五.睡眠和唤醒一个线程 有时,你会想要在一段特定的时间后再去中断线程的运行.举个例子,程序中的一个线程每一分钟检查一次传感器的状态,剩余的时间,线程应该处于空闲的状态.在这段空闲时间里,线程不会使用计算机的任何资源.一分钟后,线程已经准备好了,才让JVM选择调用它继续执行.你可以使用 Thread 类的 sleep() 方法来达到此目的.该方法接受一个 int 类型参数表明线程挂起不运行的毫秒数.当睡眠时间结束,线程转移到可运行状态等待JVM的调度. TimeUnit 枚举类的某个成员同样具有…
在日常的Java代码开发过程中,很难免地有对多线程的需求,掌握java多线程和并发的机制也是Java程序员写出更健壮和高效代码的基础.笔者找寻国内已出版的关于Java多线程和并发的的中文书籍和翻译书籍,大家一致推荐的是<Java Concurrency in Practice>,笔者暂时还没有看英文原版,笔者看的是它的翻译版<Java并发编程实战>,笔者读起来感觉并不通畅,不知道是翻译的问题还是原版本来就写得不够流畅,同时感觉知识的深度也超过了入门的需求. 笔者在机缘巧合之下,发现…
<java核心技术卷i>第一章主要内容包括三点: 1:Java白皮书的关键术语:描述Java的十一个关键字: 2:Java applet 3 :关于Java的常见误解   1:第一章:Java白皮书的关键术语:描述Java的十一个关键字: 简单性,面向对象,分布式,健壮性,安全性,体系结构中立,可移植性,解释型,多线程,高性能,动态性 部分介绍如下: 简单性:Java语法相当于C++,为一个“纯净版本”, Java去掉了C++中的头文件,指针运算(指针语法),结构,联合,操作符重载,虚基类等.…
第11章 线程与并行API 11.1 线程 11.1.1 线程 在java中,如果想在main()以外独立设计流程,可以撰写类操作java.lang.Runnable接口,流程的进入点是操作在run()方法中. 在java中,从main()开始的流程会由主线程执行,可以创建Thread实例来执行Runnable实例定义的run()方法. 11.1.2 Thread与Runnable 1.JVM是台虚拟计算机,只安装一颗称为主线程的CPU,可执行main()定义的执行流程.如果想要为JVM加装CP…
第一章 Thread导论 为何要用Thread ? 非堵塞I/O      I/O多路技术      轮询(polling)      信号 警告(Alarm)和定时器(Timer) 独立的任务(Task) 并行算法 第二章 Thread的创建与管理 一.什么是Thread ?     Thread是所在主机运行的应用程序任务(task). 仅仅有一个线程的样例: public class Factorial { public static void main(String[] args) {…