多线程

作者: 张利锋 | 来源:发表于2020-07-07 16:37 被阅读0次

一、进程和线程的概念

进程:CPU资源管理的基本单位。任务管理器中的每一个exe都是一个进程。JVM也是一个进程。
线程:CPU执行和调度的基本单位。
一个进程可以有多个线程,多个线程可以共享进程中相同的内存或文件资源。

二、多线程使用场景

(1)阻塞。一旦系统中出现了阻塞现象,则可以根据实际情况来使用多线程技术提高运行效率。
(2)依赖。业务分为两个执行过程,分别是A和B。当A业务发生阻塞情况时,B业务的执行不依赖A业务的执行结果,这时可以使用多线程技术来提高运行效率;如果B业务的执行依赖A业务的执行结果,则可以不使用多线程技术,按顺序进行业务的执行。

ps:多线程是异步的,所以千万不要把Java代码的顺序当作线程执行的顺序,线程被调用的时机是随机的。

三、多线程的实现

实现多线程编程主要有两种方式:一种是继承Thread类,另一种是实现Runnable接口。

1. 先来看第一种继承Thread类的写法:
public MyThread extends Thread{
    @Override
    public void run(){
        super.run();
        System.out.println("MyThread");
    }
}

使用方法如下:

MyThread thread = new MyThread();
thread.start();

如此便开始执行此线程。如果调用代码“thread.run();”而不是“thread.start();”,其实就不是异步执行了,而是同步执行!
在调用start()的时候执行了如下几个步骤:
(1)通过JVM告诉操作系统创建Thread
(2)操作系统开辟内存并使用windosSDK中的createThread()函数创建Thread对象
(3)操作系统对Thread进行调度,以确定执行时机
(4)Thread在操作系统中被成功执行。

2. 实现Runnable接口

如果想创建的线程类已经有一个父类了,就不能再继承Thread类(因为Java不支持多继承),所以需要实现Runnable接口来解决这样的情况,把继承留给最需要的时候使用。

public class MyRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println("MyRunnable!");
    }
}

使用方法如下:

Runnable runnable = new MyRunnable();
Thread thread = new Thread(runnable);
thread.start();

相关文章

  • iOS多线程 NSOperation

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程 pthread、NSThread

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程: GCD

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程运用

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程基础

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • 多线程介绍

    一、进程与线程 进程介绍 线程介绍 线程的串行 二、多线程 多线程介绍 多线程原理 多线程的优缺点 多线程优点: ...

  • iOS进阶之多线程管理(GCD、RunLoop、pthread、

    深入理解RunLoopiOS多线程--彻底学会多线程之『GCD』iOS多线程--彻底学会多线程之『pthread、...

  • iOS多线程相关面试题

    iOS多线程demo iOS多线程之--NSThread iOS多线程之--GCD详解 iOS多线程之--NSOp...

  • 多线程之--NSOperation

    iOS多线程demo iOS多线程之--NSThread iOS多线程之--GCD详解 iOS多线程之--NSOp...

  • iOS多线程之--NSThread

    iOS多线程demo iOS多线程之--NSThread iOS多线程之--GCD详解 iOS多线程之--NSOp...

网友评论

      本文标题:多线程

      本文链接:https://www.haomeiwen.com/subject/pubaqktx.html