线程简介
我们都习惯于线性的思考,而且不适应于在程序中以并行思路来思考,但是没有理由保留我们所习惯的单线程思考方式。
术语:线程(thread)其实是控制线程(thread of control)的简写。而控制线程,简单地说,就是在一个程序中与其他控制线程无关的能够独立运行的代码片段。
单线程进程的特征:
进程从一个众所周知的入口点开始运行;(例如:main()函数)
对于一个给定的输入,进程按照一个顺序的、预先定义好的次序来执行语句;
在执行过程中,进程要访问某些数据,在java中有三种类型的数据:局部(local)变量是从线程的堆栈中访问的,实例(instance)变量是通过对象引用来访问的,而静态(static)变量是通过类或者对象引用来访问的。
思想:
可以将多线程看作是进程,也可以将在一个java虚拟机中运行的多线程程序看成是一个操作系统中运行的多个进程。
java程序中,多线程的特征:
每一个线程都从一个预定义好的、众所周知的地方开始运行(可能是mian方法);
对于一个给定的输入,每一个线程从它的开始点按照一个顺序的、预定义好的序列运行;
每一个线程都是独立与本程序内的其他线程而执行自己的代码的;
线程看上去是在某种程度上并行运行的;
线程可以访问各种类型的数据。
启发:
你需要知道的是当你写一个java程序时,就已经有一个出事的线程从main()方法开始执行了。
如果你想进行I/O处理(特别是如果I/O会被阻塞)、使用定时器或者在初始线程中进行并行处理,你一定要考虑使用一个新的线程来完成这些任务。