多线程(一)

news2024/11/27 11:44:20

一.什么是线程

一个线程就是一个执行流,多个线程就是多个执行流,多线程就是让多个执行流分别执行自己的代码。

比如:利用多线程在控制台上循环交替打印A和B

package demo;
public class Main {
    static class SubThread extends Thread{
        @Override
        public void run() {

             while(true){
                 System.out.println("A");
             }
        }
    }
    public static void main(String[] args) {

        SubThread subThread=new SubThread();
        subThread.start();;
        
        while(true){
            System.out.println("B");
        }
    }
}

 在上面的代码中,有两个执行流,一个循环打印A,一个循环打印B,执行结果如下:

 

二.线程的特点与优势

多线程能够实现并发编程,但多进程也能实现并发编程,但是多线程它主要有以下的优点与优势:

1.线程比进程更加的轻量级

2.创建线程比创建进程更快

3.调度线程比调度进程更快

4.销毁线程比销毁进程更快

三.线程与进程的关系与区别

1.线程是比进程更加的轻量级的

2.一个进程里包含一个或多个线程,且一个进程里至少包含一个线程(必须有主线程)

3.一个线程只能属于一个进程

4.进程与进程之间不能共享内存空间,线程与线程之间可以共享内存空间

5.进程是操作系统分配资源的最小单位,线程是操作系统调度的最小单位

操作系统:操作系统本质上是一个软件,一个专门用来管理的软件。

对下:管理硬件设备

对上:管理应用程序和其他软件

四.创建线程的五种方式

1.直接继承Thread线程类,重写run方法

package demo;
//直接继承线程类
public class MyTread01 extends  Thread{
    @Override
    public void run() {

        while(true){
            System.out.println("A");
        }
    }
    public static void main(String[] args) {

        MyTread01 myTread01=new MyTread01();
        myTread01.start();
    }
}

2.实现Runnable接口

实现Runnable接口并重写run方法

package demo;
//实现Runnable接口并重写run方法
public class MyTask implements Runnable{

    @Override
    public void run() {
        while(true){
            System.out.println("A");
        }
    }
    public static void main(String[] args) {
        Thread t=new Thread(new MyTask());
        t.start();
    }
}

3.匿名内部类创建Thraed子对象

package demo;
public class MyThread03 {
//匿名内部类创建Thread子对象
    public static void main(String[] args) {

        Thread t=new Thread(){
            @Override
            public void run() {
                while(true){
                    System.out.println("A");
                }
            }
        };
        t.start();
    }
}

4.匿名内部类创建Runnable子对象

package demo;
public class MyThread04 {
//匿名内部类创建Runnable子对象
    public static void main(String[] args) {

        Thread t=new Thread(new Runnable() {
            @Override
            public void run() {
                while(true){
                    System.out.println("A");
                }
            }
        });
        t.start();
    }
}

5.使用Lambda表达式创建匿名Thread子对象

package demo;
public class MyThread05 {
//使用lambda表达式创建Thread匿名子对象
    public static void main(String[] args) {

        Thread t=new Thread(()->{
            while(true){
                System.out.println("A");
            }
        });
        t.start();
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/940542.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Webgl利用缓冲区绘制三角形

什么是attribute 变量 它是一种存储限定符&#xff0c;表示定义一个attribute的全局变量&#xff0c;这种变量的数据将由外部向顶点着色器内传输&#xff0c;并保存顶点相关的数据&#xff0c;只有顶点着色器才能使用它 <!DOCTYPE html> <html lang"en"&g…

Blender界面学习02

学习视频 【基础篇】1.3 认识界面_哔哩哔哩_bilibili 基本的3d建模的流程是什么&#xff1f; 四个角现出加号时可以拆分窗口&#xff0c;也可以合并窗口 向自己的方向拉是合并&#xff0c;向不是自己的方向拉是合并 如果界面搞乱后需要回到原来的布局 然后在新建的布局上右击 …

CSRF漏洞场景复现

文章目录 CSRF漏洞是什么&#xff1f;场景复现get方式攻击post方式攻击 原理分析 CSRF漏洞是什么&#xff1f; 跨站请求伪造(Cross Site Request Forgery&#xff0c;CSRF)是一种攻击&#xff0c;它强制浏览器客户端用户在当前对其进行身份验证后的Web 应用程序上执行非本意操作…

手把手教你用R优雅地绘制研究区地图

用R语言绘制研究区图和地图 引言 在地理信息系统和数据可视化领域&#xff0c;绘制研究区图和地图是非常重要的任务。R语言是一种功能强大的统计分析和可视化工具&#xff0c;也可以用于绘制各种类型的地图。本文将介绍如何使用R语言绘制研究区图和地图。 准备工作 在使用R语…

skywalking agent监控java服务

一、前言 skywalking agent可以监控的服务类型有多种&#xff0c;python、go、java、nodejs服务等都可以监控&#xff0c;现在通过java服务来演示skywalking agent的使用&#xff0c;并且是使用容器的方式实现 二、部署skywalking agent监控 需要注意&#xff0c;skywalking…

高忆管理:什么叫满仓?

满仓是股市术语之一&#xff0c;指出资者将所有资金用于股票出资&#xff0c;即持有的股票数量到达最大值。满仓出资是一种高风险高回报的出资战略&#xff0c;存在着带来高收益的或许性&#xff0c;但也或许面对巨大的亏本风险。 从理财视点来看&#xff0c;满仓出资是不明智…

Leetcode适合新手吗?0基础怎么较短时间得到算法数据结构提升?揭秘大牛都在用的刷题工具!...

别再用leetcode无脑刷题了&#xff01; 刷题不应该量化为“刷多少道题”&#xff0c;对于刷题来说&#xff0c;永远不是追求数量的堆叠。 你想&#xff0c;LeetCode 上的题难度不等&#xff0c;有简单、中等、困难。 刷100道简单题倒是快&#xff0c;一个星期保证完事&#xff…

具有优异导电性能且抑制了准饱和效应的1200V 4H-SiC沟槽MOSFET

标题&#xff1a;1200V 4H-SiC trench MOSFET with superior figure of merit and suppressed quasi-saturation effect 摘要 本文提出一种具有部分被埋层n区包围的p屏蔽区的优异性能(FoM)1200V 4H-SiC沟槽MOSFET。在准饱和(QS)状态下&#xff0c;埋层n区抑制由p屏蔽区形成的耗…

SharedPreference

Android中的SharedPreference是轻量级的数据存储方式&#xff0c;能够保存简单的数据类型。比如String、int、boolean值等。其内部是以XML结构保存在/data/data/包名/shared_prefs文件夹下&#xff0c;数据以键值对的形式保存。是线程安全的&#xff0c;但不是进程安全的。 1.…

electron globalShortcut 快捷键,在焦点移到其他软件上时,调用快捷键报错

用 electron 开发软件&#xff0c;在设置了 globalShortcut 快捷键后&#xff0c;在当前开发的软件上调用快捷键正常&#xff0c;但是当焦点不在当前软件时&#xff0c;在使用快捷键&#xff0c;好些时候会报错。大概率与系统快捷键产生冲突或者快键键控制的回调里获取的内容&a…

全新UI站长在线工具箱系统源码带后台开源版

该系统的全开源版本可供下载&#xff0c;并且支持暗黑模式。 系统内置高达72种站长工具、开发工具、娱乐工具等功能。此系统支持本地调用API&#xff0c;同时还自带免费API接口&#xff0c; 是一个多功能性工具程序&#xff0c;支持后台管理、上传插件、添加增减删功能。 环…

行业追踪,2023-08-28

自动复盘 2023-08-28 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

LNMT与动静分离

目录 前言 一、简要思路 二、NGINX的配置参考 1、location 2、rewirte 三、动静分离配置&#xff08;单机配置&#xff09; 1、Tomcat配置 2、配置NGINX 3、安装mariadb 4、测试 Tomcat8080​编辑 Tomcat8081 访问不存在的页面 前言 LNMT&#xff08;Linux Nginx MySQL Tom…

什么是网络取证(Network Forensics)

企业采用新技术来检查其网络安全是否存在零日漏洞&#xff0c;与立即指示问题的物理层不同&#xff0c;黑客攻击尝试可能会被忽视并变得严重&#xff0c;直到对网络流量有一个整体的可见性。通过实时监控来跟踪其源和目标的流量&#xff0c;以查明问题或潜在问题的根源。 什么…

CY3-DBCO活性荧光染料-星戈瑞

​欢迎来到星戈瑞荧光stargraydye&#xff01;小编带您盘点&#xff1a; CY3-DBCO是一种活性荧光染料&#xff0c;它是由Cyanine3&#xff08;CY3&#xff09;荧光染料与DBCO&#xff08;dibenzocyclooctyne&#xff09;官能团共轭而成的化合物。 活性荧光染料通常是指具有特定…

Android RecyclerView 之 列表宫格布局的切换

前言 RecyclerView 的使用我就不再多说&#xff0c;接下来的几篇文章主要说一下 RecyclerView 的实用小功能&#xff0c;包括 列表宫格的切换&#xff0c;吸顶效果&#xff0c;多布局效果等&#xff0c;今天这篇文章就来实现一下列表宫格的切换&#xff0c;效果如下 一、数据来…

k8s的交付与部署

一 k8s的概念 1.1 k8s k8s是一个轻量级的&#xff0c;用于管理容器化应用和服务的平台。通过k8s能够进行应用的自动化部署和扩容缩容。 1.2 k8s核心部分 1.prod: 最小的部署单元&#xff1b;一组容器的集合&#xff1b;共享网络&#xff1b;生命周期是短暂的&#xff1b; …

ChatGPT在医疗领域可应用于改善与患者的沟通

注意&#xff1a;本信息仅供参考&#xff0c;发布该内容旨在传递更多信息的目的&#xff0c;并不意味着赞同其观点或证实其说法。 自从ChatGPT在2022年末对公众开放以来&#xff0c;OpenAI的这款生成式AI聊天机器人在医疗领域展示出了巨大潜力。它已经通过了美国医学执照考试&a…

3. 运行时数据区及程序计数器

3.1. 运行时数据区 3.1.1. 概述 本节主要讲的是运行时数据区&#xff0c;也就是下图这部分&#xff0c;它是在类加载完成后的阶段 当我们通过前面的&#xff1a;类的加载-> 验证 -> 准备 -> 解析 -> 初始化 这几个阶段完成后&#xff0c;就会用到执行引擎对我们…

Centos7更新glibc2.18

Centos7更新glibc2.18 查看glibc版本下载解压glibc2.18编译安装结果验证 查看glibc版本 # 查看glibc版本 ldd --version下载解压glibc2.18 参考: https://blog.csdn.net/qq_39295044/article/details/86685789 https://blog.csdn.net/myhes/article/details/106923039 # 下载…