Java中多线程的new和执行流程

简介: 首先要了解什么叫进程什么叫线程

首先要了解什么叫进程什么叫线程


进程理解:

进程就是进程(Process)是操作系统分配资源的基本单位,一个进程拥有的资源有自己的堆、栈、虚存空间(页表)、文件描述符等信息。从编程的角度来理解进程,可以把它看作是一个类或一个 PCB(Process Control Block)进程控制块的结构体,这个结构体中大致包含以下几个内容:


1.进程编号 PID:进程的身份标识。

2.进程的状态:

新建状态

就绪状态

运行状态

阻塞状态

销毁状态

3.执行优先级

4.上下文:保存本次执行状态,以便下次继续执行,这个过程就是一个上下文。

5.内存地址


线程理解:


线程(Thread)是操作系统能够进行运算调度的基本单位。它包含在进程中,是进程中的实际运行单位。在 Unix System V 及 SunOS 中线程也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。

用户线程可以理解为应用程序自己的线程,

由程序员创建并控制的线程,

而内核线程是内核支持并使用的线程。

小知识:

Thread只能使用extends【继承方法】

Runnable只能使用implements【继承接口】

java简单实现多线程笔记:

有三个文件【两个线程文件,一个主文件】


主文件如下:

public class MultiThread {
    public static void main(String[] args) {
        ThreadDemo threadDemo=new ThreadDemo();
        threadDemo.setName("letter Thread");
        threadDemo.start();
       ThreadDemo2 threadDemo2=new ThreadDemo2();
       threadDemo2.setName("digit Thread");
       threadDemo2.start();
    }
}

线程文件:

1.public class ThreadDemo  extends Thread{
    private char[] letter={'A','B','C','D','E'};
    @Override
    public void run() {
        String name=Thread.currentThread().getName();
        Long start=System.currentTimeMillis();
        System.out.println(name+"输出字母开始时间:"+start);
        for (int i=0;i<5;i++){
            System.out.println(name+" 输出字母:"+letter[i]);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        Long end=System.currentTimeMillis();
        System.out.println(name+"输出字母开始时间:"+end);
    }
}

线程文件:

public class ThreadDemo2 extends Thread{
    private int digit =0;
    @Override
    public void run() {
        String name=Thread.currentThread().getName();
        Long start=System.currentTimeMillis();
        System.out.println(name + " 输出数字开始时间:"+start);
        for (digit = 0; digit < 10; digit++) {
            System.out.println(Thread.currentThread().getName()+"字母是:"+digit);
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        Long end=System.currentTimeMillis();
        System.out.println(name + " 输出数字结束时间:"+end);
    }
}

ps:digit数字  letter字母

这就是两个线程同时执行的示例

输出结果为:

image.png

相关文章
|
20天前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
86 1
|
20天前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
90 1
|
1月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
102 0
|
1月前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
149 16
|
2月前
|
缓存 并行计算 安全
关于Java多线程详解
本文深入讲解Java多线程编程,涵盖基础概念、线程创建与管理、同步机制、并发工具类、线程池、线程安全集合、实战案例及常见问题解决方案,助你掌握高性能并发编程技巧,应对多线程开发中的挑战。
|
2月前
|
前端开发 Java API
2025 年 Java 全栈从环境搭建到项目上线实操全流程指南:Java 全栈最新实操指南(2025 版)
本指南涵盖2025年Java全栈开发核心技术,从JDK 21环境搭建、Spring Boot 3.3实战、React前端集成到Docker容器化部署,结合最新特性与实操流程,助力构建高效企业级应用。
846 1
|
2月前
|
JavaScript 安全 前端开发
Java开发:最新技术驱动的病人挂号系统实操指南与全流程操作技巧汇总
本文介绍基于Spring Boot 3.x、Vue 3等最新技术构建现代化病人挂号系统,涵盖技术选型、核心功能实现与部署方案,助力开发者快速搭建高效、安全的医疗挂号平台。
176 3
|
存储 监控 Java
Java多线程优化:提高线程池性能的技巧与实践
Java多线程优化:提高线程池性能的技巧与实践
468 1
|
安全 算法 Java
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)(下)
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)
188 6

热门文章

最新文章