Java并发编程艺术 | 线程是进程的一个执行路径。 |
Thinking in JAVA | A thread is a single sequential flow of control within a process. |
Java编程思想 | 一个线程就是在进程中的一个单一的顺序控制流 |
Java并发编程之美 | 线程是进程的一个实体,线程本身不会独立存在的。进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,线程则是进程的一个执行路径,一个进程中至少有一个线程,进程中的多个线程共享进程的资源。 |
图解Java多线程设计模式 | 明为跟踪处理流程,实为跟踪线程 阅读程序时,我们会按处理流程来阅读。 首先执行这条语句 然后执行这条语句 接着再执行这条语句…… 我们就是按照上面这样的流程阅读程序的。 如果将程序打印出来,试着用笔将执行顺序描画出来,就会发现最终描画出来的是一条弯弯曲 曲的长线。 这条长线始终都会是一条。无论是调用方法,还是执行for循环、if条件分支语句,甚至更 复杂的处理,都不会对这条长线产生影响。对于这种处理流程始终如一条线的程序,我们称之为单 线程程序( single threaded program )。 在单线程程序中,“在某一时间点执行的处理”只有一个。如果有人问起“程序的哪部分正在 执行”,我们能够指着程序中的某一处回答说“这里,就是这儿”。这是因为,在单线程程序中 “正在执行程序的主体”只有一个。 线程对应的英文单词Thread的本意就是"线"。Java语言将此处所说的“正在执行程序的主体”称为线程。我在阅读程序时,表面看来是在跟踪程序的处理流程,实际上跟踪的是线程的执行。 多线程程序 由多个线程组成的程序就称为多线程程序(multithreaded program)。Java 编程语言从一开始就 把多线程处理列入编程规范了。 多个线程运行时,如果跟踪各个线程的运行轨迹,会发现其轨迹就像多条线交织在一起 假设有人问起“程序的哪部分正在执行”,而我们需要指出程序位置,并回答“这里,就是 这儿”。那么在多线程的情况下,一根手指根本不够用,这时需要和线程个数一样多的手指。也 就是说,如果有两个线程在运行,那就需要指出两个地方并回答“第一个线程正在这里执行,第 二个线程在那里执行”;如果有三个线程,就要指出三个地方;如果有一百个线程,就要指出一百 个地方。 |
Java核心技术卷1 | 多线程程序在较低的层次上扩展了多任务的概念:一个程序同时执行多个任务。通常每一个任务称为一个线程(thread),它是线程控制的简称。 |
Java多线程编程核心技术(第2版) | 线程可以理解为在进程中独立运行的子任务,例如,QQ.exe运行时,很多的子任务也在同时运行,如好友视频线程、下载文件线程、传输数据线程、发送表情线程等,这些不同的任务或者说功能都可以同时运行,其中每一项任务完全可以理解成是“线程”在工作,传文件、听音乐、发送图片表情等这些功能都有对应的线程在后台默默地运行。 |
实战Java高并发程序设计 | 线程的“母亲”——进程。 进程中可以容纳若干个线程。它们并不是看不见、摸不着的,也可以使用工具看到它们。 那线程和进程之间究竟是一种什么样的关系呢?简单地说,进程是一个容器。比如一间漂亮的小别墅。别墅里有电视、厨房、书房、洗手间等。当然,还有一家三口住在里面。当妈妈带女儿外出游玩时,爸爸一人在家。这时爸爸一个人在家里爱上哪里去哪里、爱干嘛干嘛,这时,爸爸就像一个线程(这个进程中只有一个活动线程),小别墅就像一个进程,家里的电视、厨房、书房就像这个进程占有的资源。当到三个人住在一起时(相当于三个线程),有时候可能就会有些小冲突,比如,当女儿占着电视机看动画片时,爸爸就不能看体育频道了,这就是线程间的资源竞争。当然,大部分时候,线程之间还是协作关系(如果我们创建线程是用来打架的,那创建它干嘛呢?)。 比如,妈妈在厨房为爸爸和女儿做饭,爸爸在书房工作赚钱养家糊口,女儿在写作业,各司其职,那么这个家就是其乐融融了,相对的,这个进程也就在健康地执行。 用稍微专业点的术语说,线程就是轻量级进程,是程序执行的最小单位。使用多线程而不是用多进程去进行并发程序的设计,是因为线程间的切换和调度的成本远远小于进程。 |
Java高并发核心编程卷2 | 一个线程在Java中使用一个Thread实例来描述. |
Introduction to Java Programming | Multithreading enables multiple tasks in a program to be executed concurrently |
Java并发实现原理:JDK源码剖析 | 线程是“一段运行中的代码”,或者说是一个运行中的函数 |
Java程序员修炼之道 | Java是第一个内置多线程编码支持的主流编程语言 |
Java多线程与线程池技术详解 | 线程(Thread)的字面意思是线路,即应用程序(进程)中的程序执行线路 |
Java编程的逻辑 | 线程表示一条单独的执行流,它有自己的程序执行计数器,有自己的栈。 |
Java多线程编程实战指南 | 事实上Java平台中的一个线程就是一个对象。 多线程编程类似于“和尚挑水”的故事:一个和尚挑水喝,两个和尚担水喝,三个和尚没水喝。在这个故事中,一个和尚挑水会比较吃力,因此每天能运上山的水也非常有限。两个和尚一起担水,每个人都省点儿力,因此他们每天运的水会比一个和尚挑的水要多一些。但是,三个和尚在一起的结果就是大家都不想去打水,最后导致没有水喝!如果把这个故事中的和尚比作线程而把打水比作这些线程所要完成的任务,那么我们不难发现增加线程可能会增加单位时间内完成的任务量,即提高程序的计算效率;但它也可能降低程序的计算效率(如故事中最后大家没有水喝)。可见,多线程编程并非使用多个线程进行编程那么简单。 |