多线程并发学习笔记(3)

关于Android SQLite3多线程并发问题,学习笔记。 最近有看到过Sqlite3的相关文章,在这做一下学习笔记, 阅读详情

thread.join();等待当前线程结束才会去执行主线程

thread.join(100);等待当前线程100毫秒才会去执行主线程

thread.join(100,10);等待当前线程100毫秒又100纳秒才会去执行主线程

关于interrupt中断线程:

1. sleep() & interrupt() 
    线程A正在使用sleep()暂停着: Thread.sleep(100000); 
    如果要取消他的等待状态,可以在正在执行的线程里(比如这里是B)调用 
        a.interrupt(); 
    令线程A放弃睡眠操作,这里a是线程A对应到的Thread实例 
    执行interrupt()时,并不需要获取Thread实例的锁定.任何线程在任何时刻,都可以调用其他线程interrupt().当sleep中的线程被调用interrupt()时,就会放弃暂停的状态.并抛出InterruptedException.丢出异常的,是A线程. 

2. wait() & interrupt() 
    线程A调用了wait()进入了等待状态,也可以用interrupt()取消. 
    不过这时候要小心锁定的问题.线程在进入等待区,会把锁定解除,当对等待中的线程调用interrupt()时(注意是等待的线程调用其自己的interrupt()),会先重新获取锁定,再抛出异常.在获取锁定之前,是无法抛出异常的. 

3. join() & interrupt() 
    当线程以join()等待其他线程结束时,一样可以使用interrupt()取消之.因为调用join()不需要获取锁定,故与sleep()时一样,会马上跳到catch块里. 注意是随调用interrupt()方法,一定是阻塞的线程来调用其自己的interrupt方法.如在线程a中调用来线程t.join().则a会等t执行完后在执行t.join后的代码,当在线程b中调用来a.interrupt()方法,则会抛出InterruptedException

4. interrupt()只是改变中断状态而已 
    interrupt()不会中断一个正在运行的线程。这一方法实际上完成的是,在线程受到阻塞时抛出一个中断信号,这样线程就得以退出阻塞的状态。更确切的说,如果线程被Object.wait, Thread.join和Thread.sleep三种方法之一阻塞,那么,它将接收到一个中断异常(InterruptedException),从而提早地终结被阻塞状态。 
    如果线程没有被阻塞,这时调用interrupt()将不起作用;否则,线程就将得到异常(该线程必须事先预备好处理此状况),接着逃离阻塞状态。 
    线程A在执行sleep,wait,join时,线程B调用A的interrupt方法,的确这一个时候A会有InterruptedException异常抛出来.但这其实是在sleep,wait,join这些方法内部会不断检查中断状态的值,而自己抛出的InterruptedException。 
    如果线程A正在执行一些指定的操作时如赋值,for,while,if,调用方法等,都不会去检查中断状态,所以线程A不会抛出InterruptedException,而会一直执行着自己的操作.当线程A终于执行到wait(),sleep(),join()时,才马上会抛出InterruptedException. 
    若没有调用sleep(),wait(),join()这些方法,或是没有在线程里自己检查中断状态自己抛出InterruptedException的话,那InterruptedException是不会被抛出来的. 

多线程和高并发介绍 多线程和高并发介绍 文章目录多线程和高并发介绍前言一、什么是多线程?1.多线程介绍2.多线程实现原理?3.白话文解释多线程4.多线程存在的问题二、什么是高并发?1.高并发介绍2.如何提升系统的并发能力三、多线程和高并发总结 前言 本文主要是针对多线程和高并发的概念做了简单的描述,介绍了什么是多线程,什么是高并发,并且对多线程和高并发的关系做了比较描述。 一、什么是多线程? 1.多线程介绍 什么是多线程,首先看下百度百科对多线程的定义;多线程(multithreading) 阅读详情

相关推荐

ali140滑块

ali 140滑块采用补环境的方式进行逆向,需要的文件主要为这两个,其中collina.js是最主要的环境校验和参数加密的逻辑,这两个文件放本地进行补环境。然后挂上代理,先保证能够正常运行代码,补了些许后能够正常运行了,我们打印最主要的加密函数看看:n值就是得到:挂上代理看看鼠标事件,不管加密逻辑,关心入参即可:收集一些鼠标事件传进记录的函数。其余就是处理一些环境值,一些resetSA的逻辑就行。截图记录:

bboysteed的博客 1677

Thread 的 join() 方法

关于 Thread 的 join 方法 1、join() 方法说明2、代码演示2.1 添加 join() 方法后2.2 添加 join() 方法前2.3 对比说明3、源码理解   线程模块,计划用一个系列博文整理总结。上一篇博文:  《线程系列1:创建线程》     1、join() 方法说明   join() 是Thread的实例方...

STRANGE-P 的博客 1万+

PDF.js实现分片加载问题

PDF.js实现分片加载问题。

qq_32822693的博客 4977

Thread.join()用法

  python3内threading库引入了Thread类,包含了一系列方法,其中,对于join()方法一直不太理解。 文章目录**1.join()函数无参数时****2.join(x)内传递了变量x**,**总结:** 1.join()函数无参数时 主线程在所有引用join的线程结束后结束。 import _thread,time,threading from threading import Thread exitFlag = 0 class myThread (Thread)

ice123muxin的博客 2568

基于STM32的工业I/O模块硬件电路实现

深入解析基于STM32的工业I/O模块硬件电路实现,涵盖关键电路设计与信号处理,突出硬件电路稳定性和工业级可靠性,适合嵌入式开发者参考。

weixin_35835018的博客 453

FactoryTool量产神器实战:5分钟搞定多块RK3568板卡并行烧录

本文详细介绍了使用瑞芯微FactoryTool对多块RK3568板卡进行高效并行烧录的实战指南。文章从硬件连接、驱动配置、软件操作到排错技巧,提供了一套完整的量产解决方案,重点阐述了如何利用该工具在5分钟内完成多设备固件烧录,并确保eMMC存储的写入稳定性与效率,大幅提升生产线吞吐量。

b0c1d2的博客 988

Thread.join()方法解析

Thread的join方法解析

程序猿小河 1216

5分钟搞定Google Custom Search API申请:从注册到获取CX Key全流程

本文详细介绍了如何快速申请和配置Google Custom Search API,从Google Cloud项目创建、启用计费、获取API Key,到在Programmable Search Engine控制台创建自定义搜索引擎并获取关键的CX Key,提供了全流程实战指南。文章还包含安全配置建议、API调用测试方法及前端与后端的集成代码示例,帮助开发者高效实现网站或应用的智能搜索功能。

weixin_29227585的博客 1666

Thread join方法细探

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34255055的博客 222

PyCharm与MicroPython联手:打造高效ESP32开发环境

本文详细介绍了如何使用PyCharm与MicroPython打造高效的ESP32开发环境。通过配置PyCharm插件、刷写MicroPython固件以及实战示例,帮助开发者快速上手嵌入式Python开发,显著提升物联网项目的开发效率。

weixin_29169899的博客 380

SuperPoint + LightGlue实战:低纹理墙面重建保姆级教程(附完整代码)

本文提供了一份针对低纹理墙面三维重建的实战教程。通过详细解析SuperPoint与LightGlue的核心参数调优,指导读者如何有效提取并匹配低纹理目标的特征点,并结合COLMAP完成从稀疏到稠密的重建流程,最终实现高精度建模。

weixin_29034963的博客 223

java中Thread类的join方法

单核cpu运行多线程时底层实现原理是多个线程间切换,由于cpu的处理速度很快,看上去像多个线程同时运行。那么我们如何实现让线程T1,T2,T3,在T1执行完成后才执行T2,T2执行完成后才执行T3,也就是线程的串行化,通过Thread类的join方法就可以实现。 join方法:将该线程加入当前线程,当前线程等待加入线程执行完成才继续执行。 例子: public class Threa

朱守成 5510

【AI Agent 记忆共享实战】【下篇】多 Agent 会话 Session 统一共享实战:全链路工程落地、采集归一、MCP 服务、私有化部署、源码级实战

中篇我们已经锁定最终最优架构方案: 非侵入式、外部旁路采集、只读归一、中心化存储、MCP 按需检索注入。摒弃「改 Agent 源码」「软链接互通」「原生 Session 互导」等不现实方案。本篇直接落地可上线、可简历复用、可个人私有化部署多 Agent 异构 Session专属采集器(Claude/CODex/DSH/OpenCode/Kimi/WorkBuddy/ 豆包)统一消息归一化解析层(解决所有 Schema 异构)增量同步、去重、时间戳对齐核心逻辑。

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 481

Java多线程和高并发学习笔记3

单例模式 单例模式:就是某个类在整个系统中只能有一个实例对象可被获取和使用的代码模式,经典例子:JVM运行环境的Runtime类 设计单例模式的要点: 1、某个类只能有一个实例(构造器私有化) 2、它必须是自行创建这个实例(含有一个该类的静态变量来保存这个唯一的实例) 3、它必须自行向系统提供这个实例(向外提供获取该实例对象的方式:1、直接暴露 2、用静态变量的get方法去获取) 实现方式: 1、饿汉式:直接创建对象,不存在线程安全的问题 2、懒汉式:延迟创建对象,存在线程安全的问题,但是可以解决 首先我们

qxf1374268的博客 238

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

多线程学习笔记-3.并发容器-保证并发线程安全策略

多线程并发容器学习,保证线程安全的策略

xingzhes_的博客 378

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

学习笔记☞python3☞网络编程(九) ☞【多线程并发、基于多线程的HTTPServer、 socketserver 模块】

1、多线程并发    1、相比多进程并发        劣势:            1、可能余姚同步和互斥机制            2、收到GIL的影响        优势:            至于要消耗较少的系统资源    2、实现方式:        threading socket 模块完成    3、步骤:        1、创建套接字        2、准备接收客户端连接    ...

赵卫坡的博客 1313

JAVA多线程并发编程学习笔记3——显式锁

JAVA并发编程 5. 显式锁 5.1 Lock接口 5.1.1 概念 Lock接口提供了无条件的、可轮询的、定时的、可中断的锁获取操作 加锁和解锁的方法都是显式的 优点:可以中断等待获取锁的线程;可以不必无限等待锁 5.1.2 方法 方法 返回值 描述 lock() void 申请锁,一直到锁可用 lockInterruptibly void 当前线程未被中断则申请锁,否则抛出异常 tryLock() boolean 只在调用时申请锁 tryLock(long, TimeU

WellsLau的博客 351

C++11并发与多线程学习笔记1(P2 P3)——并发、进程、线程的基本概念及综述

​ 本笔记内容完全来源于B站同名课程:C++11并发与多线程​。侵权必删!

Doggerlas的博客 332

《JAVA核心知识》学习笔记(3. 4. JAVA 多线程并发)-3

4. JAVA 多线程并发 4.1.2. JAVA 线程实现/创建方式 4.1.2.1. 继承 Thread 类 Thread 类本质上是实现了 Runnable 接口的一个实例,代表一个线程的实例。 启动线程的唯一方 法就是通过 Thread 类的 start()实例方法。 start()方...

chongyi1654的博客 649

尚硅谷JUC高并发编程学习笔记(3)多线程锁

多线程锁 某一个时刻内,只能有唯一一个线程去访问这些synchronized 方法 所有的静态同步方法用的也是同一把锁——类对象本身,这两把锁是两个不同的对象,所以静态同步方法与非静态同步方法之间是不会有竞态条件的但是一旦一个静态同步方法获取锁后,其他的静态同步方法都必须等待该方法释放锁后才能获取锁,而不管是同一个实例对象的静态同步方法之间,还是不同的实例对象的静态同步方法之间,只要它们同一个类的实例对象 synchronized锁的是方法,则是对象锁 同个对象锁的机制要等待,不同对象锁的机制调用同一个不用

exodus3的博客 440

java 多线程学习笔记------(3)线程同步(并发控制)

java 多线程学习笔记------(3)线程同步 前提: 并发:同一个对象多个线程同时操作  处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象。 这时候,我们就需要用到“线程同步”。 线程同步其实就是一种等待机制,多个需要同时访问此对象的线程进入这个象的等待池形成队列,等待前面的线程使用完毕后,下一个线程再使用。  由于同一进程的多个线程共享同一块存储空间,在带来方便的同时...

赌徒 328

Python实现web服务器入门学习笔记(3)——多进程、多线程实现并发HTTP服务器

一文带你了解如何使用Python实现并发服务器。

weixin_37780776的博客 781

《TCP/IP网络编程》学习笔记 | Chapter 18:多线程服务器端的实现

《TCP/IP网络编程》学习笔记 | Chapter 18:多线程服务器端的实现

ProgramNovice的博客 1239

python3多线程学习笔记(三)----(全局变量声明及锁机制)

# ----------------代码一----------------------------- ''' import threading value = 0 def add_value(): # 函数内部引用全局变量,需要使用 global 关键字进行声明。 global value for i in range(100): value += 1 print("value的值是:%d" % value) def main(): for

qq_38480908的博客 627
上一篇: 多线程并发学习笔记(1)
下一篇: 多线程并发学习笔记(4)
HelloWorld_Joe
博客等级 码龄9年 1粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值