多线程的使用(二)

Qt中多线程使用 线程池 当线程的任务量比较大时,频繁创建销毁线程会有很大的内存开销,此时使用QThread的方法就不合适,应该使用线程池QThreadPool。QThread适用于常驻内存的任务,QThreadPool适用于不常驻内存,任务量比较大的情况。 QRunnable 是一个非常轻量的抽象类,它的主体是纯虚函数 QRunnable::run(),我们需要继承它并实现这个函数。使用时需要将其子类的实例... 阅读详情

设置成后台(守护)进程

咱们默认创建的线程是"前台线程",前台线程会阻止进程退出,如果主线程(main线程)运行完了,前台线程还没完,则进程不会退出(主线程也是前台线程)

如果是"后台线程",后台线程不会阻止进程退出,如果其他前台线程都执行完了,那么即使后台线程没有执行完,进程也会退出

写法:线程对象名.setDaemon(true);

线程中断

线程中断就是让线程提前结束,本质上是让run方法尽快结束,而不是强制结束run方法

第一种方法:自定义标志位,作为线程是否结束的标记(在主线程中调节标记的true or false)

第二种方式:使用标准库中自带的标志位

1、设置标志位:Thread.currentThread().isInterrupted();

currentThread方法是Thread的静态方法,通过这个方法可以拿到当前线程的Thread对象,isInterrupted方法判断是否被中断

2、中断线程:线程对象名.interrupt();

如果要中断的线程当前在运行状态,则会设置标志位为true,如果线程当前在阻塞状态(sleep),不会设置标志位,而是会触发一个InterruptedException异常,这个异常会把sleep提前唤醒(如果要结束循环直接break掉)

java中线程的状态

在操作系统中,对于PCB有一个状态的描述,但是java觉得自带的状态不是特别合适,因此自己又搞了一套状态规则

NEW:Thread对象创建出来了,但是还没有真正的创建线程(内核的PCB还没有创建)

TERMINATED:真正的线程已经销毁了(内核的PCB已经销毁),但是Thread对象还在


RUNNABLE:就绪状态(正在CPU上运行+在就绪序列中排队)


TIMED_WAITING:按照一定的时间来阻塞(sleep)

WAITING:特殊的阻塞状态,调用wait

BLOCKED:等待锁的时候进入阻塞状态

 

 

Thread常见属性

ID---获取方法:getId()

这个ID是java中给Thread对象安排的身份标识,和操作系统内核中的PCB中的pid以及和操作系统中的线程ID都不是一回事

名称---获取方法:getName()

这个名称是刚才给线程起名字的那个名字

状态---获取方法:getState()

优先级---获取方法:getPriority()

是否是后台线程(守护线程)---获取方法:isDaemon()

线程是否存活---获取方法:isAlive()

是否被中断---获取方法:isInterrupted()

多线程系列() -Thread类使用详解 在之前的文章中,我们简单的介绍了线程诞生的意义基本概念,采用多线程的编程方式,能充分利用 CPU 资源,显著的提升程序的执行效率。其中是 Java 实现多线程编程最核心的类,学习Thread类中的方法,是学习多线程的第一步。下面我们就一起来看看,创建线程的几种方式以及Thread类中的常用方法。构造方法实例方法静态方法。 阅读详情

相关推荐

史上最全的Logisim存储系统实验教程(基于华中科技大学计算机组成原理实验)内赋源码下载

本博客是最全的最好的解释的华中科技大学计算机组成实验存储系统实验,本博客给出了电路实现,也给出了使用电路的原因有利于新手学习十分详细。并且内赋源码下载。

qq_62325622的博客 2万+

python threading实现Thread的修改值,开始,运行,停止,并获得内部值

下面的半模版代码在 win7+python3.63 运行通过并且实测可行,为了广大想要实现python多线程停止的同学 import threading import time class MyThread(threading.Thread): def __init__(self): threading.Thread.__init__(self) s...

disking的博客 6944

农业无人机:无人机图像处理_(8).遥感图像处理与分析

遥感图像处理与分析在农业无人机技术中具有重要作用,通过图像预处理、特征提取、分类与分割、目标检测等技术,可以实现对农田的精细管理、作物监测、病虫害预测等应用。本节详细介绍了这些技术的基本概念、常用方法具体实现,希望对您在农业无人机图像处理方面的学习应用有所帮助。

zhubeibei168的博客 1297

python线程 的执行顺序,及利用 队列 进行通信

一、线程间的执行顺序。 1、在所有线程都 start() 后,再join()。 import queue import threading import time, random # 定义一个放入元素的函数 def put_in(Q, items): for i in range(items): Q.put(i) print(f'{threading.cu...

白发渔礁江渚上…… 1012

[ Python - 12 ] 线程的信号量、标志位及队列

线程的信号量 线程的信号量是同时允许一定数量的线程更改数据,主要作用在于限制线程的并发。 #!_*_coding:utf-8_*_ # Author: hkey import threading, time # 线程的信号量 sem = threading.BoundedSemaphore(5) # 实例化信号量并限制并发为5个线程 def run(): ...

weixin_30387799的博客 252

python中用event标志位来控制多线程

平常编写多线程爆破工具时,线程找到正确的帐户密码时会导出结果,并直接通过os._exit(0)进行脚本退出 自己在编写FTP多线程爆破时,发现多线程进行FTP爆破时候,线程中无法通过os._exit(0)进行脚本正常的退出,只是那个爆破出正确帐户密码的线程会退出,其他的线程还是一直在爆破。 网上找了很多关于多线程退出的资料,发现写的比较多也有点乱。 后来发现了一个不错的方法...

大方子 1164

python中flag标志用法_标记变量flag的用法

对标记变量flag的用法不明白,请各位老师给讲解一下标记变量的用法,最好有实例;在下面的代码中,标记变量odd是怎么使用的?非常感谢!function stripeTables() {if (!document.getElementsByTagName) return false;var tables = document.getElementsByTagName("table");for (va...

weixin_42116791的博客 6667

Python使用类创建多线程

Python使用类创建多线程使用类创建多线程 使用类创建多线程 import time import threading #创建mythread类,继承threading.Thread父类 class mythread(threading.Thread): def __init__(self,name = 'python'): super().__init__() self.nam...

未知艺术家的博客 1801

多线程编程()NSThread的使用

多线程编程 NSThread 线程同步 数据死锁 线程通讯

qq_32510689的博客 3194

iOS多线程开发——GCD的使用多线程开发浅析(

对于iOS多线程开发,我们时刻处于学习之中,在看书中,看文档中,项目开发中,都可以去提高自己。最近刚看完了《Objective-C高级编程 iOS与OS X多线程内存管理》这本书后,对多线程有了更为深入的理解,故在此做一个总结与记录。这本书我已经上传至网盘  https://pan.baidu.com/s/1c2fX3EC ,这本书是iOS开发者必读的书之一,写得很不错,欢迎大家下载阅读。书的封

乞力马扎罗的雪CYF的博客 1万+

多线程)为什么要使用多线程

为什么要使用多线程? 这里举个例子: 在用百度云时(只能单线程运行的情况) 在使用百度云时(可以多线程的运行情况) 总结:使用多线程可以提高程序的效率 ...

佐杰的博客 274

C#多线程Thread类的使用

前面的篇章介绍了多线程的基本概念基本使用,下面介绍怎样处理带有回调功能的多线程。所谓回调就是执行完成后调用一些方法做最后的处理。例如我们想要在多线程执行完成后调用方法来表达多线程执行完毕。 一、封装带有回调函数的线程 #region //封装带有回调函数的线程 private void ThreadWithCallBack(ThreadStart threadStart, Action act...

weixin_40786497的博客 418

多线程使用实例(

实例一:多窗口售票 package com.weidd.best.multiThread; import sun.jvm.hotspot.runtime.Threads; /** * @program: SortDemo * @author: weidd * @date: 2021-02-19 23:22 * @description 模拟多线程售票 **/ public class SaleTicket { public static void main(String[] ...

奔波儿东 230

Python多线程使用()

Python多线程使用()

weixin_48120964的博客 531

Python使用threading模块实现多线程编程[两种方式起线程]

Python中我们主要是通过threadthreading这两个模块来实现的,其中Python的threading模块是对thread做了一些包装的,可以更加方便的被使用,所以我们使用threading模块实现多线程编程。一般来说,使用线程有两种模式,一种是创建线程要执行的函数,把这个函数传递进Thread对象里,让它来执行;另一种是直接从Thread继承,创建一个新的c...

weixin_33795093的博客 91

QT中多线程使用()

5.将工作对象移动到创建的子线程对象中,需要调用QObject类提供的moveToThread方法。6.启动子线程,调用start(),这时候线程启动了,但是移动到线程中的对象并没有工作。7.调用工作对象的工作函数,让这个函数开始执行,这时候是在移动到的那个子线程中运行的。2.在这个类中添加一个公共的成员函数,函数体就是我们在子线程中执行的业务逻辑。4.在主线程中创还能工作的类对象(千万不要给创建的对象指定父对象)3.在主线程中创建一个QThread对象,这就是子线程的对象。

weixin_40933496的博客 458

Java-并发【多线程使用

前言:     前面一篇介绍了并发编程的一些是名词解释,并罗列了相关疑惑点。这篇将介绍在并发编程的实际应用 一、创建多线程的方式 概述:多线程创建的方式,有人说3种,有人说4种,其实具体数字并没有什么意义,在实际使用中,根据具体应用场景,选择合适的方式即可。下面介绍几种常见的多线程创建-使用方式 1、编写自己的任务类,继承Thread类,复写Thread类的run方法,在驱动线程中创建任务...

麦芒小蚱蜢的博客 276

python使用多线程

介绍 其实python在同一时间只允许一个线程执行一个任务,其它线程都会被锁住。多线程其实就是不停的线程切换,给人以多线程的现象。python中实现这个功能的结构称为全局解释器锁(GIL)。 如果任务都是相同的,比如一直执行total=total+1,这时其实多线程帮不了太多忙,即使单线程也可以完成这个工作,因为单线程在处理这个操作的时候,基本上没有阻碍停滞。不像上次举的汽车装配的例子,当其中一...

qq_29462849的博客 263

Java——多线程基本使用

在学习多线程时,如果联系操作系统来学习,会觉得很好理解。因为学习操作系统时候,有同步,互斥,锁的一些概念~ 给个链接到上一篇~https://blog.csdn.net/zoweiccc/article/details/83002176 8.加入线程       (1)join,当前线程暂停,等待指定的线程执行结束后,当前线程再继续       (2)join(int),可以等待指定的毫秒...

没有标题 234

GCD多线程使用

记录一下GCD的几个重要API的用法。 dispatch_queue_create * @param label * A string label to attach to the queue. * This parameter is optional and may be NULL. * * @param attr * DI...

dlgms057649的博客 121

基于python识别功能,例如:发票识别(完整源码)

基于python识别功能,例如:发票识别(完整源码)

上一篇: 多线程的使用(一)
下一篇: 面向对象基础(四)
多吃维C~
博客等级 码龄5年 2粉丝 · 55原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值