线程、线程创建、多线程、线程同步

news2024/11/25 15:49:49

程序:为完成特定任务,使用计算机语言编写的一系列指令集合,即静态代码。

进程:正在执行的程序,操作系统分配资源的最小单位。

线程:进程内部最小执行单位。(具体要做的一件事情)

线程和进程的关系:一个进程可以包含多个线程,线程必须属于某一进程,不能独立存在。一个进程中的所有线程共享该进程中的所有资源。

java如何创建进程?

①extend Thread{...}

public class Solution {
    public static void main(String[] args) {
        ThreadTest threadTest=new ThreadTest();
        threadTest.start();
    }
}
public class ThreadTest extends Thread{
    @Override
    public void run() {
        for(int i=0;i<=100;i++){
            System.out.println(getName()+":"+i);
        }
    }
}

 

②实现Runnable接口

优点:1)避免了单继承的局限性 2)多个线程可以共享同一个接口实现类的对象,非常适合多个相同线程来处 理同一份资源。

package ThreadTest;

public class Solution {
    public static void main(String[] args) {
        ThreadTest threadTest=new ThreadTest();
        Thread thread=new Thread(threadTest);
        thread.start();
    }
}
public class ThreadTest implements Runnable{
    @Override
    public void run() {
        for(int i=0;i<=100;i++){
            System.out.println(Thread.currentThread()+":"+i);//Thread.currentThread():获取当前线程
        }
    }
}

 main中创建一个线程要执行的任务对象

ThreadTest threadTest=new ThreadTest();//创建线程对象
Thread thread=new Thread(threadTest);
thread.start();//启动线程
Thread.currentThread()//获取当前线程

上面两种方式的区别:

1,继承Thread类后由于java是单继承的,所以不能继续继承其他类了

2,实现Runnable接口方式可以继承其他类

继承Thread: 线程代码存放Thread子类run方法中。实现Runnable:线程代码存在接口的子类的run方法。

多线程:一个程序内部可以创建多个线程执行不同的任务。

线程同步:

并发:在一个时间段内多个任务依次执行

并行:是真正意义上的同时执行,一个时间节点多个任务同时执行

同步:排队+锁

synchronized(同步锁/对象){...}//修饰一段代码块或者一个方法

同步锁/对象要求:多个线程必须访问到的是同一个对象,对象用来记录有没有线程进入到同步代码块中。 


 以买票为例:有十张票,两个窗口同时抢票,分别使用继承Thread和实现Runnable接口两种方式实现

package ThreadTest;

public class Solution {
    public static void main(String[] args) {
        ThreadTest threadTest=new ThreadTest();
        Thread thread1=new Thread(threadTest);
        Thread thread2=new Thread(threadTest);
        thread1.start();
        thread2.start();
    }
}
package ThreadTest;

public class ThreadTest implements Runnable{
   static int num=10;
    @Override
    public void run() {
        synchronized (this) {
                while (true) {
                    if (num > 0) {
                        System.out.println(Thread.currentThread() + ":" + num);
                        num--;
                    } else {
                        break;
                    }
                }


        }
    }
}

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

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

相关文章

CAN FD数据脱机记录仪的在汽车应用上的优势

CAN FD数据脱机记录仪的优势 大容量存储&#xff1a;CAN FD数据脱机记录仪通常具备大容量的存储空间&#xff0c;可以记录长时间的CAN数据。这使得它非常适合于需要长时间记录CAN数据的场景&#xff0c;例如车辆测试、故障诊断等。 离线处理&#xff1a;CAN FD数据脱机记录仪…

python数字图像处理基础(七)——直方图均衡化、傅里叶变换

目录 直方图均衡化均衡化原理均衡化效果标准直方图均衡化自适应直方图均衡化 傅里叶变换原理低通滤波高通滤波 直方图均衡化 均衡化原理 图像均衡化是一种基本的图像处理技术&#xff0c;通过更新图像直方图的像素强度分布来调整图像的全局对比度。这样做可以使低对比度的区域…

el-dialog嵌套使用,只显示遮罩层的问题

直接上解决方法 <!-- 错误写法 --><el-dialog><el-dialog></el-dialog></el-dialog><!-- 正确写法 --><el-dialog></el-dialog><el-dialog></el-dialog>我是不建议嵌套使用的&#xff0c;平级也能调用&#xff0c…

el-cascader 级联选择器的使用及初始化解决方案

问题 如图所示&#xff0c;这是一个级联组件&#xff0c;需要拿的的值为最后一项&#xff0c;但是清空后组件没有初始化&#xff08;就是绑定的值、组件样式没有还原&#xff09;&#xff0c;点击x清除值后&#xff0c;原来选中的样式高亮还是一样的显示在页面上。 原来的代码…

sql中的explain关键字用法

在SQL中&#xff0c;使用EXPLAIN关键字可以获取查询的执行计划&#xff0c;以便进行性能优化和查询调优。执行计划提供了关于查询操作的详细信息&#xff0c;涵盖了多个表头字段&#xff0c;每个字段都提供了特定的信息。以下是explain表头字段解释&#xff1a; id&#xff1…

Redis 6.0进化之路:关键新特性详解

引言 随着技术发展的日新月异&#xff0c;Redis作为业界知名的开源内存数据结构存储系统&#xff0c;在不断演进中为开发者带来了众多令人瞩目的新特性。在2020年4月底正式发布的Redis 6.0版本中&#xff0c;一系列重大改进不仅提升了性能和扩展性&#xff0c;更强化了安全性及…

3DGS 其一:3D Gaussian Splatting for Real-Time Radiance Field Rendering

3DGS 其一&#xff1a;3D Gaussian Splatting for Real-Time Radiance Field Rendering 1. 预备知识1.1 球谐函数1.2 Splatting1.3 α \alpha α blending1.4 多维高斯的协方差矩阵1.4.1 高斯与椭球体的关系1.4.2 世界坐标系下的三维高斯到二维像素平面投影过程 2. 3D Gaussia…

【Java实战项目】基于ssm的流浪动物领养系统网站

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

【征服redis6】Redis的内存淘汰详解

目录 1.redis的基本策略 2.Redis中的缓存淘汰策略 3.Redis内存不足的情况 4.几种淘汰策略的实现原理 5.项目实践与优化策略 5.1 配置案例 5.2 项目优化策略参考 数据库存储会将数据保存到磁盘中&#xff0c;而Redis的核心数据是在内存中的&#xff0c;而Redis本身主要用来…

契约测试?生产者?消费者?一文帮你理清楚

契约测试&#xff1f;生产者&#xff1f;消费者&#xff1f;一文帮你理清楚 契约测试什么是契约&#xff1f; 先从测试金字塔讲起什么是锲约测试&#xff1f;但它们也有一些令人痛苦的缺点。&#xff1a;通常具有与 e2e 集成测试相反的属性&#xff1a; 那么&#xff0c;什么是…

删除文件怎么找回?恢复文件,3个实用方法!

“我经常会在操作电脑时误删重要的文件&#xff0c;有什么方法可以恢复删除的文件吗&#xff1f;希望大家给我推荐几个有效的操作方法&#xff01;” 在日常生活和工作中&#xff0c;我们经常会遇到误删文件的情况&#xff0c;这时如何快速有效地恢复这些文件就显得尤为重要。删…

Eclipse搭建python环境

一、下载eclipse eclipse官网下载参考链接 二、 下载PyDev ​PyDev 三、安装和配置pyDev 下载完PyDev&#xff0c;解压之后是下面两个文件夹&#xff0c;我下载的版本是PyDev 7.7 ,然后拷到eclipse对应的目录下就可以 四、然后新建一个python程序 1.新建一个项目 ​​…

S/MIME电子邮件证书申请指南

近年来&#xff0c;邮件安全问题日益突出&#xff0c;电子邮件成为诈骗、勒索软件攻击的重灾区。恶意邮件的占比屡创新高&#xff0c;邮件泄密事件更是比比皆是。在如此严峻的网络安全形势下&#xff0c;使用S/MIME电子邮件证书进行邮件收发是当今最佳的邮件安全解决方案之一。…

设计模式的学习笔记

设计模式的学习笔记 一. 设计模式相关内容介绍 1 设计模式概述 1.1 软件设计模式的产生背景 设计模式最初并不是出现在软件设计中&#xff0c;而是被用于建筑领域的设计中。 1977 年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任 Christopher Alexander 在…

SD-WAN网络建设:设备、服务与综合解决方案

随着数字化转型的推进&#xff0c;企业对于网络性能和连接的需求日益增加&#xff0c;而SD-WAN&#xff08;软件定义广域网&#xff09;作为一项创新的网络解决方案&#xff0c;成为提升效率和灵活性的关键工具。然而&#xff0c;构建一个完善的SD-WAN网络并非仅仅关乎设备的采…

橘子学K8S04之重新认识Docker容器

我们之前分别从 Linux Namespace 的隔离能力、Linux Cgroups 的限制能力&#xff0c;以及基于 rootfs 的文件系统三个角度来理解了一下关于容器的核心实现原理。 这里一定注意说的是Linux环境&#xff0c;因为Linux Docker (namespaces cgroups rootfs) ! Docker on Mac (bas…

(2023版)斯坦福CS231n学习笔记:DL与CV教程 (4) | 神经网络与反向传播

前言 &#x1f4da; 笔记专栏&#xff1a;斯坦福CS231N&#xff1a;面向视觉识别的卷积神经网络&#xff08;23&#xff09;&#x1f517; 课程链接&#xff1a;https://www.bilibili.com/video/BV1xV411R7i5&#x1f4bb; CS231n: 深度学习计算机视觉&#xff08;2017&#xf…

storm统计服务开启zookeeper、kafka 、Storm(sasl认证)

部署storm统计服务开启zookeeper、kafka 、Storm&#xff08;sasl认证&#xff09; 当前测试验证结果&#xff1a; 单独配置zookeeper 支持acl 设置用户和密码&#xff0c;在storm不修改代码情况下和kafka支持当kafka 开启ACL时&#xff0c;storm 和ccod模块不清楚配置用户和密…

提升UI设计水平的关键技能,轻松打造专业形象!

UI关注软件图形界面&#xff0c;包括按钮、布局、动画、过渡、微交互等。简而言之&#xff0c;UI关于界面的外观。 UI设计包括以下界面&#xff1a; -用户图形界面(GUI):GUI设计用户与系统控制工具之间的视觉交互。计算机桌面是一种GUI。 -语音控制界面(VUI):VUI设计用户与系…

网站SEO优化方案

1&#xff0c;去各类搜索引擎里面&#xff0c;注册你的站点 解决方案&#xff1a;注册地址&#xff1a;https://seo.chinaz.com/chinaz.com 2&#xff0c;网站地址使用 https 会增加搜索排名 解决方案&#xff1a;https:www.xxx.com 3&#xff0c;官网每个页面的 meta 里面&a…