搜索
首页Javajava教程重拾java基础(十七):多线程上总结

重拾java基础(十七):多线程上总结

一、进程

1. ctrl+shift+esc   任务管理器窗口2. 程序都是在操作系统环境下运行的 ,需要占用CPU和内存资源,从程序开始运行到程序被关闭,这个过程叫进程3. 进程是操作系统中独有的概念,进程=正在运行的程序4. 正在运行的程序都至少对应一个进程5. 有些程序会采用多进程架构设计7. 进程间相互独立,不能互相访问或共享资源

二、线程(thread)

1. 程序-进程  工厂2. 工厂里的生产线就叫线程3. 进程包含线程,线程是更小的一个独立的执行单元 4. 一个进程中可以包含一个线程(单线程),也可以包含多个线程(多线程)5. QQ是一个程序(进程),打开的每个聊天窗口就是一个线程6. 咱们之前写的程序都是单线程,JVM会自动把main方法当成一个线程(生产线)去执行7. 线程不能独立运行,不能脱离进程去执行,多个线程之间可以共享进程的资源8. 线程之间是独立的

三、多线程编程

1. 咱们之前写的程序都是单线程,JVM会自动把main方法当成一个线程(生产线)去执行2. 一个程序中有A/B两个功能,如果采用多线程编程,A功能可以放到一个线程(生产线)中执行,B功能可以放到一个线程(生产线)中执行3. 上传图片   a.一张一张上传   b.多张同时上传4. 多线程是进一步利用了CPU和内存的资源,从而提供程序的执行效率5. 工厂         迅雷

四、CPU跟多线程

1. 一个学生能同时写字和看片吗?大脑在写字和看片之间切换2. 胶片电影     速度非常快,大脑会产生错觉3. 真正的“同时”是不存在的,CPU是在 多个线程之间极快的、轮流的、随机的进行切换

五、Java支持多线程

1.Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程或后台服务线程) 。守护线程的作用是为其他线程的运行提供服务,比如说GC线程。2.方式一:  继承Thread类     方式二:  实现Runnable接口

六、方式一

1. 我们之前定义的类都是普通类,因为这些类中的代码不能同时去执行,这些类不是生产线类2. Java专门提供了一个生产线类:java.lang.Thread类,该类中的代码是可以同时执行的3. 步骤:        让我们自定义的类继承Thread类,我们定义的类就变成了生产线类        在自定义的类中重写run方法,把需要同时执行的代码放到run方法中        在main方法中,先造生产线,然后启动生产线     start()

七、Thread类

public long getId(),获得该线程的编号(线程 ID) ,它在创建该线程时生成。线程 ID 是唯一的,并终生不变。public final void setName(String name),给线程命名,不命名的话都有默认的,格式为:Thread-0、Thread-1...public final String getName(),获得线程的名字public void start(),使该线程开始执行,JVM会自动调用该线程的 run() 方法。public static void sleep(long millis),让线程休眠(暂停)多少毫秒public static Thread currentThread(),获得当前正在执行的线程对象的引用。(方式二会用到)

八、多线程的执行流程

1. JVM首先找到的是main方法,并把main中的代码放到一个线程中执行,这个线程叫主线程2. 另外自己人工创建的线程可以称之为是子线程3. 程序必须等到所有的线程都执行完了,才会结束

九、方式二

1. 弊端:方式一继承了Thread类后就不能继承其他类了  好处:简单、容易实现2. 步骤:    a.我们自定义的类实现java.lang.Runnable接口    b.把需要同时执行的代码放到run方法中    c.在main中创建生产线(Thread)并启动3. 方式二没有方式一的弊端,但是比方式一复杂

十、线程安全问题、

1. 什么情况下会存在线程安全问题?   a.多个线程之间是相互独立的   b.多个线程在操作或使用共享资源2. 多个线程操作的是同一个共享资源,但是线程之间是彼此独立、互不联系的,因此就会出现数据不同步更新的情况,这就是线程安全问题3. 卖火车票案例         同时要执行的代码:卖10张火车票         共享资源:10张火车票      一般作为属性存在

十一、怎么解决线程安全问题

1. 思路:火车上的厕所,一个一个进......2. 同步锁,专业术语叫监视器monitor3. Java在每个对象中都自动内置了一个监视器monitor   遍地都是锁4. 有两种实现方式:同步代码块     同步方法

十二、同步代码块

1. 先分析哪些代码需要上锁2. synchronized(锁){   }3. 多个线程之间使用的锁必须是同一把锁

十三、同步方法

1. 把需要上锁的代码先放到一个方法中2. 把该方法变成同步方法public synchronized void sell(){     操作共享数据的代码即需要同步的代码;}3. 同步方法的锁默认是this,是固定的

十四、同步锁的利弊

同步的好处:       同步的出现解决了多线程的安全问题同步的弊端:    当线程相当多时,因为每个线程都会去判断同步上的锁,这是很耗费资源的,无形中会降低程序的运行效率。(性能和线程安全不可兼得)

十五、细节问题

1. 静态方法可以改为同步方法吗? 可以   但是锁不是this    加载类的字节码文件      Student.class2. 线程安全问题出现的前提是:必须存在共享资源,而且多个线程使用了共享资源3. 锁必须是同一把锁


以上就是重拾java基础(十七):多线程上总结的内容,更多相关内容请关注PHP中文网(www.php.cn)!


声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
如何将Maven或Gradle用于高级Java项目管理,构建自动化和依赖性解决方案?如何将Maven或Gradle用于高级Java项目管理,构建自动化和依赖性解决方案?Mar 17, 2025 pm 05:46 PM

本文讨论了使用Maven和Gradle进行Java项目管理,构建自动化和依赖性解决方案,以比较其方法和优化策略。

如何使用适当的版本控制和依赖项管理创建和使用自定义Java库(JAR文件)?如何使用适当的版本控制和依赖项管理创建和使用自定义Java库(JAR文件)?Mar 17, 2025 pm 05:45 PM

本文使用Maven和Gradle之类的工具讨论了具有适当的版本控制和依赖关系管理的自定义Java库(JAR文件)的创建和使用。

如何使用咖啡因或Guava Cache等库在Java应用程序中实现多层缓存?如何使用咖啡因或Guava Cache等库在Java应用程序中实现多层缓存?Mar 17, 2025 pm 05:44 PM

本文讨论了使用咖啡因和Guava缓存在Java中实施多层缓存以提高应用程序性能。它涵盖设置,集成和绩效优势,以及配置和驱逐政策管理最佳PRA

如何将JPA(Java持久性API)用于具有高级功能(例如缓存和懒惰加载)的对象相关映射?如何将JPA(Java持久性API)用于具有高级功能(例如缓存和懒惰加载)的对象相关映射?Mar 17, 2025 pm 05:43 PM

本文讨论了使用JPA进行对象相关映射,并具有高级功能,例如缓存和懒惰加载。它涵盖了设置,实体映射和优化性能的最佳实践,同时突出潜在的陷阱。[159个字符]

Java的类负载机制如何起作用,包括不同的类载荷及其委托模型?Java的类负载机制如何起作用,包括不同的类载荷及其委托模型?Mar 17, 2025 pm 05:35 PM

Java的类上载涉及使用带有引导,扩展程序和应用程序类负载器的分层系统加载,链接和初始化类。父代授权模型确保首先加载核心类别,从而影响自定义类LOA

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器