多线程详解(一)

1. 多线程详解

1.1 概述

多线程就是同一个种任务多个终端运行,互相不打扰但也可以互相通信,线程拥有完整的生命周期,从出生到运行到死亡。

需要区分三个概念,线程,进程,多线程。

在一般的程序中一般都是主线程单方向的向下运行,调用方法时也是运行中断,但始终都是一条下往下走,这就是单线程。

进程就是系统开辟的一些空间,里面包含了至少一条线程,一个执行过程,一个动态的概念,而线程是CPU执行的调度的单位。

在一个进程内的很多条线程同步运行既是多线程。

有几个核心概念:

  1. 线程就是独立的执行路径。
  2. 线程是由CPU调度的,调度的过程不能认为干扰,其与操作系统紧密相关。
  3. 对同一份资源进行操作时,一般需要添加并发控制,防止资源抢夺问题。
  4. 线程会带来额外的开销成本,如时间和并发控制开销。
  5. 每个线程在自己的工作内存交互,内存控制不当会造成数据不一致。

1.2 线程的创建

线程继承的方法一般有三种:

  1. 继承Thread类。
  2. 实现Runnable接口。
  3. 实现Callable接口。

首先是Thread类,第一步就是自定义线程类来继承Thread类,也就是随别定义一个类继承Thread

然后重写run()方法,编写线程的执行体,最后是创建线程对象,然后调用start()方法即可启动线程。

package com.cabin.test06;

public class Thread1 extends Thread{
    @Override
    public void run() {
        for (int i = 0; i <20 ; i++) {
            System.out.println("wait" + i);
        }
    }

    public static void main(String[] args) {

        Thread1 thread = new Thread1();

        thread.start();

        for (int i = 0; i < 20; i++) {
            System.out.println("run " + i);
        }
    }
}

以上是继承Thread类创建线程的方法,运行后会发现线程和主线程的运行是同时运行的,结果交替出现:

在这里插入图片描述

顺序是随机的,每一次运行的结果都会不一样,这个和CPU的运行情况有关。

注意几点:

  1. 线程开启以后不一定马上执行,随CPU而定。
  2. 调用的是start()方法才能开启线程,而不是run方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值