温故而知新之Java多线程编程(一)

来源:互联网 发布:手机必备实用软件 编辑:程序博客网 时间:2024/06/02 06:58

最近在复习多线程,为了更深入的理解,也就是可以讲给别人听,故写此文。

本文主要来自于对于《Java多线程编程》一书的复习,还有少量的《Java并发编程》《Java多线程编程实战指南(设计模式篇)》。有兴趣的读者可以去看看。

首先来看几个概念:并行并发进程、线程

进程百度百科里的定义我就不说了,你可以理解为一个执行的程序,也就是你打开任务管理器看到的那一堆.exe文件。

并行:就是在多个处理器或者多核的环境下同时执行多个进程。

并发:一般在单核处理器上,让用户以为有多个进程在同时执行这个是宏观上说的,但是在微观角度,其实是通过快速切换时间片的方式实现的。

线程: 这个可以理解为进程中独立执行的子任务。就是一个程序比如说QQ中的多个功能都是可以同时运行的。对于单独的任务来讲都是线程在在运行的。

那么使用多线程的好处是什么呢?

现在的CPU处理任务是很快的,为了提高CPU的利用率也就是不让他闲在那里,通过CPU在多个任务间的来回切换,提高系统运行效率。

一个进程在运行的时候至少会有一个线程在运行,在Java中也是这样,我们知道运行Java程序都需要有一个入口函数也就是我们的main函数,其实每一个Java程序都对应着一个JVM实例,所以当我们运行一个Java程序时,JVM创建一个JVM实例也就是一个程序,而这个伴随着该进程运行的线程就是主线程

看代码:

执行结果如下:


控制台中的main是正在执行main方法的线层的名字,控制台中的main和main方法没有任何关系,只是一个线程的名字而已。

实现多线程有多种方式,不仅仅局限于我下面要说的这两种第一种就是继承Thread另一种就是实现Runnable接口。

再说他们之前我们先看一段JDK中的源码如下:


由于Thread类实现了Runnable接口,通过对于Java多态和继承的理解我们可以想到下面这些:

由于Java是单继承所以使用继承Thread的方式创建新的线程的时候就是不支持多继承,如果我们想要实现多继承那么我们就可以通过实现Runnable接口的方式来创建新的线程,从本质上讲都是通过Runnable接口来创建线程,所以这两种方式创建的线程在工作时本质上是一样的。

使用继承Thread方式创建多线程:


结果如下:


通过start()方法来启动线程。


结果和上面的一样。




0 0
原创粉丝点击