JAVA多线程的理解以及学习

一 如何去理解多线程

百度定义:

在这里插入图片描述
太过于官方,简单理解就是 一个进程(程序)下运行时有多个线程
由此引出来三个概念:

  1. 什么是进程
  2. 什么是线程

什么是进程?

进程是指在系统中正在运行的一个应用程序,
进程是由进程控制块、程序段、数据段三部分组成;

  • 系统进程
    凡是用于完成操作系统的各种功能的进程就是系统进程,它们就是处于运行状态下的操作系统本身。
    在这里插入图片描述

  • 用户进程
    用户进程就是所有由你启动的进程。进程是操作系统进行资源分配的单位。
    每一个.exe都是一个用户线程在这里插入图片描述
    进程控制块: 包含进程的描述信息和控制信息,是进程存在的唯一标志

程序段 :用于描述进程要完成的功能,是控制进程执行的指令集

数据段:是程序在执行时所需要的数据和工作区

什么是线程?

线程是系统分配处理器cpu 时间资源的基本单元,或者说进程之内独立执行的一个单元。

线程在java中的运用:

  • 创建多线程 —— 继承 Thread
public class ThreadTest extends Thread{ //继承Thread类
    public static void main(String[] args) {
        ThreadTest threadTest=new ThreadTest();
        threadTest.start();
    }
    @Override
    public  void run(){
        threadPrintln.threadPrintln2();
    };
}
  class  threadPrintln{
    public static void  threadPrintln2(){
        System.out.println("多线程继承 Thread ");
    }
}

在这里插入图片描述
点进去 Thread的类, 看源码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 创建多线程 —— 实现 Runnable

public class RunnableTest implements Runnable
{
    @Override
    public void run() {
        runablePrintln.runablePrintln2();
    }
    public static void main(String[] args) {
        RunnableTest runnableTest=new RunnableTest();
       new Thread(runnableTest).start();
    }
}
class  runablePrintln{
    public static void  runablePrintln2(){
        System.out.println("多线程 实现Runnable ");
    }
}

在这里插入图片描述
源码分析
实现了Runnable接口在这里插入图片描述
在这里插入图片描述

  • 创建多线程 —— 实现 Callable
//callable的好处 1、可以定义返回值 2、可以抛出异常
- public class CallableTest implements Callable<Boolean> {
    @Override
    public Boolean call() throws Exception {
        callablePrintln.callablePrintln2();
        return true;
    }
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        CallableTest callableTest=new CallableTest();
        //创建执行服务:
        ExecutorService ser= Executors.newFixedThreadPool(1);
        // 提交执行:
        Future<Boolean> result= ser.submit(callableTest);
        System.out.println("result :  "+result.get());
        //关闭服务:
        ser.shutdownNow();
    }
}
class callablePrintln{
    public static void  callablePrintln2(){
        System.out.println("多线程  实现callable类");
    }
}

在这里插入图片描述

源码复习
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值