JAVA多线程-学习笔记

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

好处:

  • 可以定义返回值
  • 可以抛出异常
posted @   可乐加冰q_q  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示