JAVA学习总结-多线程基础:

参考书籍:疯狂JAVA讲义

 

1.进程和线程;

进程是处于运行过程中的程序;并且具有一定的独立功能;进程是系统进行系统资源分配和调度的一个独立单位.

 

一般而言,进程包括以下三个特征:

独立性:进程是系统中存在的实体,它可以拥有自己独立的资源,每一个进程都拥有自己私有的地址空间.在没有经过进程本身允许的情况下,一个用户进程不可以访问其他进程的地址空间.

动态性:进程与程序的区别在于,程序是一个静态的指令集合,而进程是一个正在系统中活动的指令集合.在进程中加入了时间的概念,进程具有自己的生命周期和不同的状态,这些概念都是程序不具备的.

并发性:多个进程可以在单个处理器上并发执行,多个进程之间不会互相影响.

 

什么是并发?

并发指的是同一时刻只有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果.

线程是进程的执行单元,当进程被初始化后,主线程就创建了.

 

操作系统可以同时执行多个任务,每一个任务就是一个进程,进程可以同时执行多个任务,每个任务就是线程.

 

2.线程的创建和启动;

JAVA使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例.

 

2.1,继承Thread创建线程类

--定义Thread的子类,并重写run();该方法的方法体就代表了线程需要完成的任务,因此把run()称为线程执行体.

--创建该类的实例,即创建了线程对象.

--调用线程对象的start();启动线程.

 

2.2,实现Runnable接口创建线程类

--定义Runnable接口的实现类,并重写该接口的run();该方法的方法体同样是该线程的线程执行体.

--创建Runnable实现类的实例,并以此作为Thread的参数来创建Thread对象,这个对象才是线程对象.

--调用线程对象的额start();启动线程.

 

2.3,使用CallableFuture创建线程

--创建Callable接口的实现类,并实现call();call()将作为线程执行体,且该call()有返回值,再创建Callable实现类的实例.

--使用FutureTask类来包装Callable对象,FutureTask对象封装了该Callable对象的call()的返回值.

 

--使用FutureTask对象作为Thread的参数创建并启动线程.

--调用FutureTask对象的get()来获得子线程执行结束后的返回值.

 

线程的生命周期;

 

3.1,新建状态(New):新创建了一个线程对象。

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzfsz.html