Java教程

Java 多线程学习笔记

本文主要是介绍Java 多线程学习笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Java 多线程

线程简介

  • 一个进程,通常可以包含若干个线程,线程是 CPU 调度和执行的单位。

  • 线程就是独立的执行路径;

  • 在程序运行时,即使没有自己创建线程,后台也会有多个线程,如主线程,gc 线程;

  • main() 为主线程,即系统的入口,用于执行整个程序;

  • 在一个进程中,如果开辟了多个线程,线程的运行由调度器安排调度,调度器是与操作系统紧密相关的,先后顺序是不能人为干预的;

  • 对同一份资源操作时,会存在资源抢夺的问题,需要加入并发控制;

  • 线程会带来额外的开销,如 CPU 调度时间,并发控制开销;

  • 每个线程只能在自己的工作内存中交互,内存控制不当会造成数据不一致。

线程实现(重点)

普通方法调用和多线程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4j9K3lsm-1635691815680)(https://img10.360buyimg.com/ddimg/jfs/t1/141212/26/27751/207535/617e9574Ed49c8f12/5de91c494e9fb485.png)]

三种实现方式

Thread class —— 继承 Thread 类(重点)

Runnable 接口 —— 实现 Runnable 接口(重点)

Callable 接口 —— 实现 Callable 接口(了解)

Thread 实现

自定义线程类继承 Thread 类

重写 run() 方法,编写线程执行体

创建线程对象,调用 start() 方法启动线程

package Thread;

// 创建线程方式1:继承 Thread 类,重写 run() 方法,调用 start 开启线程
// 总结:注意,线程开启不一定立即执行,由 CPU 调度执行
public class TestThread1 extends Thread{
    @Override
    public void run() {
        // run 方法线程体
        for (int i=0; i<20; i++) {
            System.out.println("我在写代码----" + i);
        }
    }

    public static void main(String[] args) {
        // main 线程,主线程
        // 创建一个线程对象
        TestThread1 testThread1 = new TestThread1();
        // 调用 start 方法开启线程
        testThread1.start();

        for (int i = 0; i < 20; i++) {
            System.out.println("我在学习多线程----" + i);
        }
    }
}

线程状态

线程同步(重点)

线程通信问题

高级主题

这篇关于Java 多线程学习笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!