Java线程浅记
Posted xpeanut
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java线程浅记相关的知识,希望对你有一定的参考价值。
首先,更正我之前的一个误区,之前一直将一个程序比作一个进程,那是不准确的;
那么先来明确:程序,进程,线程的概念;
程序:程序是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。(自己理解:无论是介绍C++还是Java等语言的书上多少会提到--程序 = 数据 + 算法,我以此作为引子,可以将算法看作指令(例如自增的 i++),这也是一种算法,这样比较好记住程序的概念);
进程:进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程,如下图:
里面的Google,IDEA等就是一个进程;
线程:线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程,放图辅助:
------------------------------------------------------------------------------------------------------------------------
所以,多进程是指操作系统能同时运行多个任务(程序),多线程是指在同一程序中有多个顺序流在执行。
在java中实现多进程有3种方式,一种是继续Thread类,一种是实现Runable接口,还有一种是实现Callable接口,下面用代码来说明。
一、继续Thread类
大致的顺序为:集成Thread类,重写 run方法,开启线程;
public class ThreadTest01 extends Thread{ @Override public void run() { // run方法线程 for (int i = 0; i < 200; i++) { System.out.println("我是run方法线程" + i); } } // main线程,主线程 public static void main(String[] args) { // 创建线程对象 ThreadTest01 thread1 = new ThreadTest01(); // start方法,开启线程 thread1.start(); for (int i = 0; i < 200; i++) { System.out.println("我是main方法主线程" + i); } } }
结果:
可以看见,线程之间,谁抢到资源,谁就run,无序;
待续......................................
以上是关于Java线程浅记的主要内容,如果未能解决你的问题,请参考以下文章
浅记对于select多路IO网络模型性能调优和BUG解决方案