Java—多线程创建详解
2021-01-18 17:17
标签:ati 异常 call nal 优势 之间 处理 功能 抽象 1)继承 代码 运行结果 注意: 代码 运行结果 代码 运行结果 并行:parallelism,物理上同时执行;多个处理器同时处理多条指令;(单线程永远无法达到并行状态) 结论: 综合:推荐使用线程类实现Runnable和Callable接口方式创建多线程。 参考书籍 Java—多线程创建详解 标签:ati 异常 call nal 优势 之间 处理 功能 抽象 原文地址:https://www.cnblogs.com/Andya/p/12912544.html多线程介绍
线程和进程
进程
线程
进程和线程的关系
多线程的优势
多线程实现方式
多线程实现的三种方式
Thread类
创建线程类;
2)实现Runnable接口
创建线程类;
3)使用Callable
和Future
创建线程。继承Thread类创建线程类
继承Thread类步骤
Thread类
的子类,并重写该类的run()
方法,该run()
方法的方法体就代表线程需要完成的任务。run()
即为线程执行体;Thread子类
的实例,即创建线程对象;start()
方法来启动该线程。常用方法
Thread currentThread()
:Thread类的静态方法,返回当前正在执行的线程对象。void setName()
:Thread类的实例方法,重命名线程名称。String getName()
:Thread类的实例方法,返回调用该方法的线程名称。void start()
:启动线程。run()
:start()方法调用后,执行Thread的run()体。示例
public class ThreadTest extends Thread {
private int i;
@Override
public void run() {
for(; i
main线程:main
继承Thread启动线程:Thread-0 : 0
继承Thread启动线程:Thread-0 : 1
重命名后的新线程名:Thread-new : 2
重命名后的新线程名:Thread-new : 3
实现Runnable接口创建线程类
实现Runnable接口步骤
Runnable接口
的实现类,并重写该接口的run()
方法,该run()
是线程执行体;Runnable实现类
的实例,并以此实例作为Thread
的target来创建Thread对象
,该Thread对象才是真正的线程对象;start()
方法来启动该线程。
实现Runable接口和继承Thread的方式区别:继承Thread创建的线程是创建的Thread子类即可代表线程对象;而实现Runable接口的创建的Runnable对象只能作为线程对象的target。示例
public class RunnableTest implements Runnable {
private int i;
@Override
public void run() {
//不能直接调用getName()和setName()方法,Runnable只有run方法
for(; i
常用方法
public abstract void run();
:Runnable接口中只包含一个抽象方法,Runnable接口是函数式接口,可使用Lambda表达式创建Runnable对象。main线程:main
实现Runnable接口创建线程:Thread-0 : 0
实现Runnable接口创建线程:Thread-0 : 1
实现Runnable接口创建线程:Thread-0 : 2
实现Runnable接口创建线程:Runnable-Thread-new : 0
实现Runnable接口创建线程:Thread-0 : 3
实现Runnable接口创建线程:Runnable-Thread-new : 1
实现Runnable接口创建线程:Thread-0 : 4
实现Runnable接口创建线程:Runnable-Thread-new : 2
实现Runnable接口创建线程:Runnable-Thread-new : 3
实现Runnable接口创建线程:Runnable-Thread-new : 4
使用Callable和Future创建线程
使用Callable和Future步骤
示例
public class CallableFutureTest implements Callable
main线程:main
实现Callable接口创建线程: pool-1-thread-1 : 0
实现Callable接口创建线程: pool-1-thread-2 : 0
实现Callable接口创建线程: pool-1-thread-1 : 1
实现Callable接口创建线程: pool-1-thread-2 : 1
futureTask1: 2-futureTask2: 2
executor pool: true
time: 5
Q&A
并行和并发的区别
并发:concurrency,逻辑上多个任务交织执行;多个进程指令交替执行,同一时刻只有一条指令执行。(宏观上给人一种错觉是多个进程同时执行)进程与线程的区别
线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个进程死掉就等于所有的线程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。
多线程作用是提高应用程序的使用率,而不是提高执行速率。
三种实现线程方式的区别
《疯狂Java》
《并发编程实战》
上一篇:c++高精度
下一篇:.jar文件执行命令