![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程与多进程
冰点契约丶
西安互联网付费就业,Java开发,软件测试开发线上线下辅导 欢迎有需要的朋友咨询。
展开
-
Java并发笔记(补)
java并发篇笔记原创 2024-02-19 14:52:46 · 311 阅读 · 0 评论 -
CompletableFuture常用API
CompletableFuture异步任务原创 2023-01-27 23:04:49 · 441 阅读 · 0 评论 -
JUC中的三个辅助类
JUC中的三个辅助类。原创 2022-09-20 11:07:46 · 188 阅读 · 0 评论 -
多线程开发--Queue
Queue从一个线程向另一个线程发送数据最安全的方式可能就是使用queue 库中的队列了。创建一个被多个线程共享的Queue 对象,这些线程通过使用put() 和get() 操作来向队列中添加或者删除元素。Queue 对象已经包含了必要的锁,所以你可以通过它在多个线程间多安全地共享数据。Python 包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列PriorityQueue。Queue 中包含以下方法:Queue.qsize() 返回队列的大小Que原创 2021-06-29 14:18:38 · 554 阅读 · 0 评论 -
多线程开发--信号量
我们都知道在加锁的情况下,程序就变成了串行,也就是单线程,而有时,我们在不用考虑数据安全时,不用加锁,程序就变成了并行,也就是多线程。为了避免业务开启过多的线程时。我们就可以通过信号量(Semaphore)来设置指定个数的线程import threadingimport timesemaphore = threading.Semaphore(3)def thread(num): semaphore.acquire() print(f"第{num}个人正在过安检,{time.time原创 2021-06-29 14:12:55 · 113 阅读 · 0 评论 -
多线程开发--线程死锁
产生死锁的四个必要条件:(1) 互斥条件:一个资源每次只能被一个线程使用。(2) 请求与保持条件:一个线程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:线程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干线程之间形成一种头尾相接的循环等待资源关系。案例1import threadingimport timeYU_lock = threading.Lock()XZ_lock = threading.Lock()class MyThread1(thre原创 2021-06-29 12:52:46 · 59 阅读 · 0 评论 -
多线程开发--同步锁
同步锁同步就是协同步调,按预定的先后次序进行运行。如:你说完,我再说。"同"字从字面上容易理解为一起动作,其实不是,"同"字应是指协同、协助、互相配合。如进程、线程同步,可理解为进程或线程A和B一块配合,A执行到一定程度时要依靠B的某个结果,于是停下来,示意B运行;B依言执行,再将结果给A;A再继续操作。这既是同步python对线程加锁主要有Lock和Rlock模块注意:加锁还可以使用with 效果一样必须使用同一把锁如果使用锁,程序会变成串行,因此应该是在适当的地方加锁 线程调度本质上是不原创 2021-06-29 12:00:11 · 216 阅读 · 0 评论 -
线程不安全
如下,问题产生的原因就是没有控制多个线程对同一资源的访问,对数据造成破坏,使得线程运行的结果不可预期。这种现象称为“线程不安全”。在一个进程内的所有线程共享全局变量,能够在不使用其他方式的前提下完成多线程之间的数据共享(这点要比多进程要好)缺点就是,线程是对全局变量随意遂改可能造成多线程之间对全局变量的混乱(即线程非安全)由于50000次循环在一个cpu事件片段里未完成计算,所以造成了数据混乱from threading import Threaddef fun1(name): print原创 2021-06-29 11:21:31 · 132 阅读 · 0 评论 -
Python多线程开发--协程
协程协程(coroutine),又称为微线程,纤程。(协程是一种用户态的轻量级线程)作用:在执行A 函数的时候,可以随时中断,去执行B 函数,然后中断继续执行A 函数(可以自动切换),注意这一过程并不是函数调用(没有调用语句),过程很像多线程,然而协程只有一个线程在执行协作的标准1.必须在只有一个单线程里实现并发2.修改共享数据不需加锁3.用户程序里自己保存多个控制流的上下文栈4.一个协程遇到IO 操作自动切换到其它协程协程创建方式1:通过greenlet模块from greenlet原创 2021-06-27 20:25:11 · 759 阅读 · 2 评论 -
多线程--守护线程
setDaemon将线程声明为守护线程,必须在start() 方法调用之前设置, 如果不设置为守护线程程序会被无限挂起。这个方法基本和join是相反的。当我们 在程序运行中,执行一个主线程,如果主线程又创建一个子线程,主线程和子线程 就分兵两路,分别运行,那么当主线程完成想退出时,会检验子线程是否完成。如 果子线程未完成,则主线程会等待子线程完成后再退出。但是有时候我们需要的是 只要主线程完成了,不管子线程是否完成,都要和主线程一起退出,这时就可以 用setDaemon方法如果没有用户线程,那么守护线程也原创 2021-06-27 17:27:35 · 292 阅读 · 0 评论 -
Python多线程--threading模块
使用threading模块使用threading模块来创建线程是很方便的。简单地说,只要将类继承于threading.Thread,然后在init方法中调用threading.Thread类中的init方法,重写类的run方法就可以了import threadingimport timedef run(name): for i in range(3): print(f"线程{name}正在运行中") time.sleep(1)if __name__ ==原创 2021-06-27 17:13:48 · 258 阅读 · 5 评论