并发系列(五)-----线程详解

本文深入探讨了线程和并发编程的基本概念,包括进程与线程的区别,线程的生命周期状态,以及在Java中创建线程的三种常见方法。通过理解和掌握这些核心概念,开发者能够更好地设计和实现高效、安全的多线程应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 简介

线程这个话题,不管是在面试中还是在工作中会经常的遇见。而并发编程的目的就是为了在尽量不影响程序的执行效率的情况下保证数据的安全性和正确性。要想理解线程首先要明白一些概念性的东西。

进程:具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.

线程:进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.

一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列

二 线程的状态

线程的生命周期中存在的状态有新建、就绪、运行、阻塞、死亡。Java将操作系统中的运行和就绪两个状态合并称为运行状态。Java线程在运行的生命周期中可能处于下表所示的6种不同的状态,在给定的一个时刻,线程只能处于其中的一个状态。

在Java中线程的变化以及Java对应的方法如下图

在上图中线程的状态的变化以及操作线程的方法全部列出来了,有的是Object的方法有的是Thread的方法,有的是concurrent包下的一些方法。

三 线程的新建

线程的创建有的方式有三种分别是

1.通过继承Thread重写run方法

2.通过实现Runnable接口重写run方法

3.通过实现Callable<T>接口重写call方法

具体代码如下

/**
 * <p>
 * 类说明
 * </p>
 *
 * @author Alemand
 * @since 2018/10/19
 */
public class ThreadTest {

    static class Thread1 extends Thread{
        @Override
        public void run() {
            super.run();
        }
    }

    static class Thread2 implements Runnable{

        @Override
        public void run() {

        }
    }
   static class Thread3 implements Callable<Integer>{

        @Override
        public Integer call() throws Exception {
            return null;
        }
    }

    public static void main(String[] args) throws Exception {
        Thread1 thread1 = new Thread1();
        thread1.start();
        Thread2 thread2 = new Thread2();
        thread2.run();
        Thread3 thread3 = new Thread3();
        Integer call = thread3.call();
    }


}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值