Java基础——多线程


前言

本文总结了java多线程的比较完整系统的知识点,以及涉及到的生产者与消费者模式做了总结。


一、线程概述

1.什么是进程和线程?

  • 进程是指一个内存中的运行程序。每个进程都有一块自己独立的内存空间,一个进程中可以启动一个或多个线程。
  • 线程是指进程中的一个执行流程,线程是由进程创建的,它是进程的一个实体。一个进程可以创建多个线程。
  • 每个运行的程序都是一个进程,在一个进程中还可以有多个执行单元同时运行,这些执行单元可以看作程序执行的一条条线索,被称为线程。操作系统中的每一个进程中都至少存在一个线程。
  • java中程序最少有两个线程(主线程和GC回收线程)
单线程与多线程
  • 单线程:如果在main方法中没有创建其它的线程,那么当main方法执行完最后一个语句,JVM就会结束java应用程序。
  • 多线程:如果在main方法中还有其它线程,那么JVM要在主线程和其它线程之间来回切换,直到等所有的线程都执行完毕才会结束java应用程序。
  • 多线程的优势:
    1. 减轻交互频繁,涉及面多的应用程序的困难。
    2. 程序的吞吐量会得到改善。
    3. 有多个处理器的系统,可以并发运行多个不同的线程。
用户线程和守护线程
  1. 用户线程:也叫工作线程,当线程的任务执行完后通知线程结束。
  2. 守护线程:一般是为工作线程服务的,当所有的工作线程结束后,守护线程自动结束。
    设置一个线程为守护线程:(启动线程前先设置)
thread1.setDaemon(true);

线程结束后,守护线程自动结束。

2.什么是并行和并发?

  • 并行是指在同一时间点,多个任务同时进行。多核CPU可以实现并行
  • 并发是指在很小的时间段,多个任务交替进行,造成一种”貌似同时进行“的错觉。单核CPU实现的多任务就是并发。
  • 并发和并行可以同时存在的,即在并行的任务中,某个或多个任务中又有多个线程运行,那几个线程就是并发的。

二、多线程的实现

1.继承Thread实现多线程

  1. 在java中,要想实现多线程,必须依靠线程主体类;而java.lang.Thread是java中负责操作多线程的类,只要继承Thread类,就能成为线程主体类。为满足一些其它的需求,还可通过实现Runnable接口来定义。
  • 实例代码如下:
    实现步骤:让该线程类继承Thread ——》 重写run() ——》启动线程的start方法

public class MyThread extends Thread{
   
    private String name;
    public MyThread(String name){
   
        this.name = name;
    }
    @Override
    public void run() {
   
        for (int i = 0; i < 50; i++) {
   
            System.out.println(this.name + "在运行"+i);
        }

    }
}
 
public class Demo {
   
    public static void main(String[] args) {
   

        MyThread myThread1 = new MyThread("线程");
        Thread thread1 = new Thread(myThread1);
        Thread thread2 = new Thread(myThread1);
        Thread thread3 = new Thread(myThread1);
        thread1.start();
        thread2.start();
        thread3.start();
    }
}

2.Runnable接口实现多线程

	java中通常是使用Runnable接口来实现多线程,因为Java的单继承机制以及很多时候会涉及到公共的参数资源。
此时需要Runnable接口才能实现。

演示代码如下:

public class Ticket implements Runnable{
   

    @Override
    synchronized public void run() {
   
        for (int i = 0; i < 10; i++
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值