1 进程与线程
(1)进程:正在进行中的程序。
(2)线程:就是进程中一个执行单元或执行情景或执行路径,负责进程中程序执行的控制单元。
一个进程中至少要有一个线程。 当一个进程中线程有多个时,就是多线程。 比如我们经常使用杀毒软件杀毒,在杀毒的同时我们可以清理电脑垃圾,这就是多线程的体现。
2 线程的作用
多线程解决的问题:可以让多部分代码同时执行。什么是同时执行呢?其实都是CPU在瞬间做着快速切换完成的。CPU的切换随机的,按照时间片的方式来完成。
其实JAVA运行就是多线程的。在执行main函数中内容的同时,垃圾回收器也在回收堆内存的垃圾。所以执行main方法的线程和执行垃圾回收器的线程同时在执行,这就是多线程。
JVM在启动线程的时候,每一个线程都有自己要执行的内容。其中一个负责执行main函数中的内容,这个线程称之为主线程。负责垃圾回收器运行的称之为垃圾回收线程。
为什么要启动多线程呢?因为有多部分代码需要同时执行。而且每一个线程都有自己要执行的内容,这个内容称之为线程的任务。简单说:启动线程就是为了执行任务,当任务有多个需要同时执行时,就需要多个线程。
【例2.1】不使用线程的方式的缺点。
ZiThread.java
public class ZiThread {
private String name;
ZiThread (String name)
{
this.name = name;
}
public void show()
{
for(int x=1; x<=10; x++)
{
for(int y=-99999999; y<99999999; y++){}//刻意写个循环让程序运行慢一点。
System.out.println(name+"---"+x);
}
}
}
ThreadDemo.java
public class ThreadDemo {
public static void main(String[] args) {
// TODO 自动生成的方法存根
ZiThread d1 = new ZiThread ("旺财");
ZiThread d2 = new ZiThread ("小明");
d1.show();
d2.show();
}
}
运行结果:
分析上述代码可以发现,旺财不结束,小明出不来。因为主线程执行时,先执行的旺财,再执行小明。那么,可不可以实现旺财和小明同时执行呢?一条路径是无法解决这个问题的,需要多条路径来完成,那么就得在程序中创建线程。而打印小明旺财等代码就是线程任务。