首页 > 编程语言 >JAVA多线程-学习笔记

JAVA多线程-学习笔记

时间:2022-09-21 20:57:38浏览次数:64  
标签:执行 Runnable JAVA Thread 笔记 线程 run 多线程 public

1.1 概述

  • 程序:程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。
  • 进程(Porcess):是执行程序的一次执行过程,是一个动态的概念,是系统资源分配的单位。
  • 线程(Thread):一个进程可以包含若干个线程,一次进程至少得有一个进程才有存在的意义。

程序执行起来叫进程,一个进程包含多个线程,如main()是主线程等等。
(操作系统中运行的程序就是进程)

image

总结

image

1.2 线程创建

线程有三种创建方法

image

1.2.1 继承Thread类

步骤:

  1. 自定义线程类继承Thread类
  2. 重写run()方法,编写线程执行体
  3. 创建线程对象,调用start()方法启动线程

示例:

//自定义线程类继承Thread类
public class PrimeThread extends Thread{

    //重写run()方法,编写线程执行体
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println("这个线程执行体");
        }
    }

    //主线程
    public static void main(String[] args) {
        //创建线程对象
        PrimeThread primeThread = new PrimeThread();
        //调用start()方法启动线程
        primeThread.start();
    }
}

注意:

  • 线程开启不一定立即执行,由CPU调度执行。
  • 线程与线程之间交替执行,并非真正的同时执行。

1.2.2 实现Runnable

步骤:

  1. 自定义类实现Runnable接口
  2. 实现run()方法,编写线程执行体
  3. 创建Runnable接口的实现类对象
  4. 创建线程对象,调用start()方法启动线程

推荐使用Runnable对象,因为Java多单继承的局限性,Thread本质上也是实现Runnable

//自定义类实现Runnable接口
public class MyRunnable implements Runnable{
    
    //重写run()方法,编写线程执行体
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println("这个线程执行体");
        }
    }

    public static void main(String[] args) {
        
        //创建Runnable接口的实现类对象
        PrimeThread primeThread = new PrimeThread();
        //创建线程对象,通过线程对象开启线程(代理)
        new Thread(primeThread).start();

    }
}

1.2.3 两种方法对比

image

1.2.4 实现Callable(了解)

image

好处:

  • 可以定义返回值
  • 可以抛出异常

标签:执行,Runnable,JAVA,Thread,笔记,线程,run,多线程,public
From: https://www.cnblogs.com/XiaoHuangHAHAHA/p/16717097.html

相关文章

  • 多线程
    一.Java构建线程的方式继承Thread实现Runnable实现Callable线程池方式推荐手动创建线程池二.线程池的7个参数publicThreadPoolExecutor(intcorePoolSiz......
  • Java: Immutable Patterns
     /***版权所有2022涂聚文有限公司*许可信息查看:*描述:*不变模式ImmutablePatterns*历史版本:JDK14.02*2022-09-12创建者geovindu*2022-09-1......
  • Java流程控制01(Scanner用法)
    使用next():packageScanner;importjava.util.Scanner;publicclassDemo01{publicstaticvoidmain(String[]args){//创建一个扫描器对象,用于接受......
  • 【学习笔记】DOM对象
    【学习笔记】DOM对象DOM:文档对象模型浏览器网页就是一个DOM树形结构更新:更新DOM节点遍历:得到DOM节点,通过ID、class等删除:删除DOM节点添加:添加一个新的DOM节点 要......
  • elasticsearch8.1源码编译笔记
    环境idea2022.1.3jdk17macos10.14.6gradle7.4.2(代码自动下载)前置准备idea设置JDK17idea设置gradleJVM为ProjectJVMgradle设置aliyun加速(可选),有时设......
  • Java map和flatmap
    importjava.lang.reflect.Array;importjava.util.ArrayList;importjava.util.List;importjava.util.Locale;publicclass_1{publicstaticvoidmain(Str......
  • JavaLearnDay03
    转义字符引用数据类型·特点:存储一个引用(内存地址)通过引用指向内存地址中的数据值·字符串类型:关键字:String作用:存储多个字符补充内容:在Java中所有整数默认为int......
  • 前端学习笔记--HTML5
    网页的优点(客户端为网页)(B/S)模式开发成本低)不需要安装无需更新跨平台(最重要)可以有效的减小开发成本传统的为C/S模式,开发成本高前端工程师负责写网页的源代码,而浏览......
  • 走进Java接口测试之测试框架TestNG数据驱动(入门篇)
     https://mp.weixin.qq.com/s?__biz=MzIwNDY3MDg1OA==&mid=2247485789&idx=1&sn=fb6c0abd38419747e61d9b14dee10466&chksm=973ddbb8a04a52aeee5869d47b1d0ea01467f2c3bdb9......
  • 计算机毕业设计 SpringBoot+Vue校园疫情防控系统 校园疫情管理系统 社区疫情防控系统J
    ......