Java面向对象—多线程

Java实现的Pacman游戏项目:面向对象编程与多线程实践 本文还有配套的精品资源,点击获取 简介:Aktlek Mukhtassyrov和Abay Serikov使用Java语言完成了Pacman游戏的实现,作为他们学习Java类的结业项目。本文深入探讨了该项目中的关键知识点,包括面向对象编程、图形用户界面(GUI)、事件处理、多线程、游戏逻辑、数据结构与算法、资源管理、状态机以及错误处理,旨在为Java学习者提供宝贵的实践参考。... 阅读详情

多线程

1、多线程是指在一个程序中同时执行多个线程,每个线程都有自己独立的执行路径。在多线程中,程序的执行可以同时进行多个任务,从而提高系统的资源利用率和响应性能。

2、多线程的作用:多线程可以更好的利用CPU的资源

3、Java多线程的相关概念:

进程:程序是静态的概念,而进程是动态的概念。每启动一个程序时操作系统就会为其分配一独立的地址空间。 线程:而线程是进程中的一部分,进程包含多个线程在运行。 主线程:Java中如果我们没有启动线程,那么系统会给程序启动一个线程,即主线程,main方法就在主线程运行,程序都是由线程来执行的。

4、线程的状态:

  • 创建状态

  • 就绪状态

  • 运行状态

  • 阻塞状态

  • 死亡状态

5、多线程并发

Java内置支持多线程编程,多线程程序包含两条或两条以上并发运行的部分,把程序中每个这样的部分都叫作一个线程(thread);每个线程都有独立的执行路径,因此多线程是多任务处理的一种特殊形式。 只要应用程序涉及到并发,就离不开多线程编程 (比如:机票销售系统中会有多个机票代售点)

6、开发多线程的两种方式

(1)继承Thread类,并重写run()方法

(2)实现Runnable接口,并重写run()方法

7、Thread类中的方法

方法 用途 static int enumerate(Thread [ ] t) 将线程所在的线程组及其子组中所有活动的线程复制到指定数组中,返回线程的个数 final String getName() 返回线程的名称 final boolean isAlive() 如果线程是激活的,则返回 true final void setName(String name) 将线程的名称设置为由name指定的名称 final void join( ) throws InterruptedException 等待线程结束

8、继承Thread类实现多线程

package _17多线程;
​
/**继承Thread类实现多线程
 * @author Lx
 * @create 2024-03-13 15:12
 */
public class MyThread extends Thread{
    public MyThread() {
    }
    public MyThread(String name) {
        super(name);//调用父类中有一个参数的构造方法
    }
    public void run() {
        for (int i = 1; i < 1000; i++) {
            if (i%10==0) {
                try {
                    sleep(1000);
                    //Thread.sleep(1000);//sleep()是静态方法,也可以用类名调用
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println(getName()+":"+i);
        }
    }
}
package _17多线程;
​
/**测试继承Thread类实现多线程
 * @author Lx
 * @create 2024-03-13 15:27
 */
public class MyThreadTest {
    public static void main(String[] args) {
        MyThread mt1=new MyThread("线程1");
        MyThread mt2=new MyThread("线程2");
​
//        mt1.run();
//        mt2.run();
        mt1.start();//start()可以启动线程,run()只是普通的运行方法
        mt2.start();//start()启动线程后,会自动执行run()方法
    }
}

9、实现Runnable接口实现多线程

package _17多线程;
​
/**实现Runnable接口实现多线程
 * @author Lx
 * @create 2024-03-13 15:36
 */
public class MyThread1 implements Runnable{
    String name;//此类继承了Object,特有属性需要自己写
​
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
​
    public MyThread1() {
        super();
    }
​
    public MyThread1(String name) {
        super();
        this.name = name;
    }
​
    public void run() {
        for (int i = 1; i < 1000; i++) {
            if (i%10==0){
                try {
                    //此类继承Object,实现Runnable接口
                    //需要用Thread类去调用sleep()方法
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println(getName()+":"+i);
        }
    }
}
package _17多线程;
​
/**
 * @author Lx
 * @create 2024-03-13 15:48
 */
public class MyThread1Test {
    public static void main(String[] args) {
        MyThread1 m1=new MyThread1("线程1");
        MyThread1 m2=new MyThread1("线程2");
        //必须要对线程m1进行再次封装,才能用start()启动
        Thread t1=new Thread(m1);
        Thread t2=new Thread(m2);
        t1.start();
        t2.start();
    }
}

10、线程优先级

Java中的线程优先级是在Thread类中定义的常量

NORM_PRIORITY:值为5

MAX_PRIORITY:值为10

MIN_PRIORITY:值为1

缺省优先级为NORM_PRIORITY

有关优先级的方法有两个:

final void setPriority(int newp):修改线程的当前优先级

final int getPriority():返回线程的优先级

11、线程同步

有时两个或多个线程可能会试图同时访问一个资源,例如,一个线程可能尝试从一个文件中读取数据,而另一个线程则尝试在同一文件中修改数据。在此情况下,数据可能会变得不一致。为了确保在任何时间点一个共享的资源只被一个线程使用,使用了“同步“

12、线程注意事项

不论是通过继承Thread,还是实现Runnable接口创建线程,它们的一个对象只能启动一次。

解决线程同步问题的方法:用synchronized来标识需要同步的代码块。

瑞芯微RK3568开发板实战:Android11系统parameter.txt文件配置全解析(附常见问题排查) 本文深入解析了瑞芯微RK3568开发板在Android 11系统下parameter.txt文件的配置要点与实战技巧。作为BootLoader启动阶段的核心蓝图,该文件决定了硬件初始化、分区布局及电源管理。文章详细拆解了身份标识、GPIO控制(PWR_HLD)、命令行参数及分区表等关键字段的配置逻辑,并针对RK3568平台与Android 11特性提供了专项适配策略,最后附带了启动失败、分区异常等常见问题的深度排查方法。 阅读详情

相关推荐

告别黑窗口!用VSCode+Native Debug调试C/C++程序,比GDB命令行舒服多了

本文介绍了如何使用VSCode配合Native Debug扩展来调试C/C++程序,替代传统的GDB命令行方式。通过可视化调试环境,开发者可以更高效地管理断点、查看变量和调用栈,大幅提升调试效率。文章详细讲解了环境配置、核心调试功能及高级技巧,帮助开发者快速上手这一现代调试工具。

weixin_26833139的博客 249

C++面向对象(OOP)编程-多线程详解

要理解多线程需要理解线程和进程的区别。应用由程序和数据组成,程序中包括多个或者一个进程,进程中包括多个或者一个线程。进程的范围大于线程。

发狂的小花的博客 1472

3D数学-动力学

3D数学-11-动力学 旋转运动学 二维旋转动力学 首先我们考虑最简单的情况: 我们将F施加在圆盘(忽略质量)上的一个点(质量为m)上 图中:F为我们施加的力,O是枢轴原点。 通过基本的运算,我们可以得到 F'= F*sinθ 那么切向加速度 a = F'/ m 切向加速度是线性速度的加速度,我们通过除以半径获得角加速度 α = a / r 现在,我们换一种方式,那就是通过杠杆臂的方式去施加力 为了能够计算出m点的角加速度,我们需要引入一个概念:扭矩 他的理解类似于力矩,公式如下 τ = Flsi

韩天衣的博客 2285

Java面向对象程序开发——多线程开发

多线程开发与异常

二哈喇子! 1608

结构设计3D拆件与骨架模型构建实战:基于Creo 8.0的5个高效建模技巧

本文详细解析了基于Creo 8.0的结构设计3D拆件与骨架模型构建实战技巧,涵盖5个高效建模方法,包括参数化驱动、曲面分割、多实体协同设计等。通过骨架模型的智能应用,设计效率可提升30%以上,特别适合复杂产品的结构设计。文章还提供了TWS耳机充电仓等实战案例,帮助工程师快速掌握工业设计中的核心建模技术。

weixin_30000735的博客 568

ThingsKit物联网平台产品管理之物模型

物模型是ThingsKit物联网平台为产品定义的数据模型,用于描述产品的功能。本文介绍物模型相关概念和使用限制。

云腾五洲官方博客 1172

Java面向对象——多线程

进程(Program) 是对数据描述与操作的代码的集合。 是程序的一次动态执行过程,它对应了从代码加载。执行至执行完毕的一个完整过程。这个过程也是进程本身产生,发展至消亡的过程。 进程的特点: 进程是系统运行程序的基本单位。 每一个进程都有自己独立的一块内存空间、一组系统资源。 每一个进程的内部数据和状态都是完全独立的。 在操作系统中可以有多个进程,这些进程包括系统进程(由操作系统内部建立的进程)和用户进程(有用户程序建立的进程) 线程 是进程中执行运算的最小单位,可完成一个独立的顺序控制流程

Chen_NC的博客 461

别再买错磁铁了!手把手教你为TLE5012B/AS5047等磁编码器选配和安装径向充磁磁铁

本文详细解析了为TLE5012B/AS5047等磁编码器选配和安装径向充磁磁铁的关键要点。从充磁方向的物理本质到供应商沟通技巧,再到安装工艺的黄金法则,帮助工程师避免常见错误,确保磁编码器稳定工作。特别强调了径向充磁的重要性及验证方法,并提供了尺寸选择、温度特性和抗干扰设计的实用建议。

weixin_26750481的博客 314

【Java】《面向对象与多线程综合实验》报告

说明:这是武汉理工大学计算机学院【面向对象与多线程综合实验】课程的实验报告 >>点击查看WUTer计算机专业实验汇总 谨记:纸上得来终觉浅,绝知此事要躬行。 《面向对象与多线程综合实验》报告 1 实验目的   运用Java语言,以迭代方式逐步编程实现一个小型档案管理系统。由此了解软件开发的一般过程,深入理解面向对象语言的基本概念和基本原理,理解和掌握继承与...

拾年之璐 1万+

【深度学习新浪潮】算力行业的核心技术有哪些?

算力行业核心技术是芯片+互联+存储+调度+能效+软件的全栈协同:芯片提供算力、互联打通集群、存储保障数据、调度提升效率、能效支撑规模、软件释放算力。当前AI大模型推动算力从“单机”走向“万卡级超节点集群”,技术竞争从单一芯片升级为系统级、全栈化的综合能力。

专注:太空算力、AI infra、异构调度、大模型成本工程 338

磁悬浮分子泵:起源、现状与未来趋势深度解析

摘要 磁悬浮分子泵作为高真空获取的关键设备,通过磁悬浮技术实现转子无接触高速运转,大幅提升了真空系统的性能和可靠性。本文系统梳理了分子泵从机械轴承到磁悬浮的技术演变历程,分析了当前行业格局及主要厂商产品特性,包括爱德华兹、普发真空等国际巨头的技术优势。研究进一步探讨了磁悬浮分子泵在半导体制造、科研设备等领域的核心应用,通过数学模型揭示了其性能参数关系。最后,展望了未来在智能化、节能化等方面的发展趋势,为相关领域的技术创新提供参考。 关键词:磁悬浮分子泵;高真空技术;半导体制造;科研设备;技术发展

技术工作者 689

面试题整理(面向对象和多线程)

简述面向对象的的编程语言和以往编程语言的根本不同点。 面向对象的编程语言和以往的编程语言根本是在于抽象机制的不同;1、机器语言和汇编语言几乎没有任何抽象,对于机器而言是最合适的描述,他可以直接操作机器的硬件,并且任何操作都是面向机器的,这就要求人们在使用及其或者汇编语言编写程序的时候必须按照机器的方式去思考问题,因为没有抽象机制,所以程序员不得不陷入复杂的事物之中。 2、面向过程的语言使程序员可以...

You are my sunshine 507

前拉后推计划逻辑适用于哪些行业和企业规模?

《前拉后推计划逻辑的行业适用性分析》摘要:前拉后推计划逻辑(需求端后推锚定交付、供应端前拉匹配资源)最适用于需求波动大且具规模效益的行业,包括家具制造(定制化需求+批量运输)、机械装备(非标设备+部件采购)、消费电子(短周期产品+核心部件备货)及汽车配套(交期绑定+批量生产)等领域。该模式要求企业具备:1)独立计划部门;2)ERP/MES等信息系统;3)资源冗余能力,故更适配中型(1-10亿营收)和大型企业(10亿+)。小型企业需简化应用,仅聚焦关键环节。不适配需求稳定(如快消品)、无规模效益或短周期生产的

追随内心 144

头歌实训代码 Java面向对象 高级特性 多线程

【代码、答案】头歌作业,面向对象、高级特性(集合框架、IO流)、多线程

HL031125的博客 2310

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java《面向对象与多线程综合实验》报告

《面向对象与多线程综合实验》报告 1 实验目的 运用Java语言,以迭代方式逐步编程实现一个小型数据挖掘系统。由此了解软件开发的一般过程,深入理解面向对象语言的基本概念和基本原理,理解和掌握继承与多态、异常处理、输入输出流、GUI设计、JDBC数据库操作、网络编程、多线程等技术;熟练掌握在Java语言环境下,上述技术的具体实现方法。 2 系统需求分析与设计 [请描述和介绍系统的需求分析和框架] (...

qq_45621040的博客 2863

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java面向对象——多线程——上

面向对象 多线程 数据库

新长城 2224

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

java多线程电梯调度_面向对象之多线程(可捎带电梯调度)

面向对象之多线程(可捎带电梯调度)1. 题目重述​本题完成的任务为多部多线程可捎带调度电梯的模拟,电梯系统具有的功能为:上下行、开关门、新增一部可以使用的电梯,电梯系统在某一层开关门时间内可以上下乘客。电梯系统可以采用任一的调度策略,只要保证在一定时间内将所有乘客送至目的地即可。​本题采用的是目的选层电梯,在电梯的每层入口,都有一个输入装置,让每个乘客输入自己的目的楼层,所以一个电梯请求除了人员i...

weixin_30246273的博客 715

Java网络编程: 面向对象与多线程实战

武汉理工大学(WHUT)“面向对象与多线程综合实验”课程源代码(无GUI最终版(实现client-server网络编程))。

RaySunWHUT 943

Java编程实战指南面向对象设计与多线程技术精要

优秀的面向对象设计能够构建清晰、可扩展的系统架构,而多线程技术则能通过并行计算提升系统性能。当面向对象设计与多线程技术真正融合时,将形成结构化联锁效应:清晰的职责边界确保线程安全的可实现性,而并发需求则驱动类的设计走向更科学的模块划分。这种创新性实践验证了一个真理:好的架构设计不是简单的技术叠加,而是通过系统思考实现技术要素的量子纠缠。.peek(e -> preHandle(e)) // 单线程预处理。| 优化的面向对象+多线程组合 | 17ms | 46ms | 12.1K |

jofjKGJy的博客 756

Java面向对象封装和继承,java多线程实战指南pdf

// 由于是设置成员变量的值,这里可以加入数据的验证 if (a < 0 || a > 130) { System.out.println(a + “不符合年龄的数据范围”); return; } age = a; } // 对外提供访问成员变量的方法 public void getAge() { return age; } } 总结: 类中不需要对外提供的内容都私有化,包括属性和方法。 以后再描述事物,属性都私有化,并提供setXxx getXxx方法对其进行访问。 注意:私有仅仅是封装

m0_64867896的博客 164

Java 知识框架主要包括面向对象、集合框架、异常处理、泛型和多线程等知识

面向对象: 面向对象是一种编程思想,它将程序中的数据和操作封装到一个对象中,通过定义类来创建对象,并通过对象之间的交互实现功能。以上是面向对象、集合框架、异常处理、泛型和多线程等Java知识的详解及案例,希望对你有帮助。案例:使用集合框架创建一个存储学生对象的集合,并实现对集合中学生的增、删、改、查等操作。案例:创建一个学生类,包含学生的姓名和年龄属性,以及获取学生信息和修改学生信息的方法。例子:定义一个学生类,包括学生的姓名、年龄和学号等属性,以及学生的吃饭、学习等行为。

码界云仓 766

Java面向对象——多线程——下

Java面向对象——多线程——下 欢迎光临阿木学习笔记 ---------------------- 沐木开发笔记 TuoZou.com . 期待与您交流! ---------------------- 面向对象 线程间的通讯通信 线程间通信-等待唤醒机制 wait(),noti

u014481497的专栏 620

【合集】Java进阶——Java深入学习的笔记汇总 & 再论面向对象、数据结构和算法、JVM底层、多线程、类加载、

spring作为主流的 Java Web 开发的开源框架,是Java 世界最为成功的框架,持续不断深入认识spring框架是Java程序员不变的追求;而spring的底层其实就是Java,因此,深入学习Spring和深入学习Java是硬币的正反面,两者相辅相成,相互促进。本篇博客是一篇不定期持续更新的博客,是一些Java深入学习的笔记汇总。Java进阶(4)——结合类加载JVM的过程理解创建对象的几种方式:new,反射Class,克隆clone(拷贝),序列化反序列化。

web_15534274656的博客 1534

java面向对象多线程上机,第35节:Java面向对象中的多线程

imageJava面向对象中的多线程多线程在Java面向对象中的多线程中,要理解多线程的知识点,首先要掌握什么是进程,什么是线程?为什么有多线程呢?多线程存在的意义有什么什么呢?线程的创建方式又有哪些?以及要理解多线程的特点等。多线程和线程的理解多线程?线程,多个线程,如何理解什么是进程呢?如图:任务管理器任务管理器中有个进程,下面列表的则是正在进行中的任务程序,都属于进程(正在执行中的程序),那...

weixin_28826961的博客 151

【合集】Java进阶——Java深入学习的笔记汇总 & 再论面向对象、数据结构和算法、JVM底层、多线程、类加载

spring作为主流的 Java Web 开发的开源框架,是Java 世界最为成功的框架,持续不断深入认识spring框架是Java程序员不变的追求;而spring的底层其实就是Java,因此,深入学习Spring和深入学习Java是硬币的正反面,两者相辅相成,相互促进。本篇博客是一篇不定期持续更新的博客,是一些Java深入学习的笔记汇总。Java进阶(4)——结合类加载JVM的过程理解创建对象的几种方式:new,反射Class,克隆clone(拷贝),序列化反序列化。

李白 1482

【合集】Java进阶——Java深入学习的笔记汇总 &amp; 再论面向对象、数据结构和算法、JVM底层、多线程

spring作为主流的 Java Web 开发的开源框架,是Java 世界最为成功的框架,持续不断深入认识spring框架是Java程序员不变的追求;而spring的底层其实就是Java,因此,深入学习Spring和深入学习Java是硬币的正反面,两者相辅相成,相互促进。本篇博客是一篇不定期持续更新的博客,是一些Java深入学习的笔记汇总。Java进阶(4)——结合类加载JVM的过程理解创建对象的几种方式:new,反射Class,克隆clone(拷贝),序列化反序列化。

web_13233421436的博客 430
上一篇: Java面向对象—IO流
下一篇: Java面向对象—反射
得闲饮茶呃
博客等级 码龄4年 303粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值