关于线程

Posted inti

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于线程相关的知识,希望对你有一定的参考价值。

协程:所与要的线程:单线程,方式:同步,实现:异步程序级别:函数,实现机制:事件循环+协程 应用场景:io密集任务

协程

yield from通常用在什么地方呢?在协程中,只要是和IO任务类似的、耗费时间的任务都需要使用yield from来进行中断,达到异步功能!

@asyncio.coroutine装饰器是协程函数的标志,我们需要在每一个任务函数前加这个装饰器,并在函数中使用yield from yield from 类似for i in range()

Import asycio 中 yield from 替换为await

新语法@asyncio.coroutine替换为async

Yield from

 

 

Import threading

#线程调用一定要start方法启动线程 结束

For i intherads

  1. jion()等待线程完成

继承创建线程一定重写父类run方法

锁单线程一般不怎么用到 锁的好处确保了某段关键代码只能由一个线程重头到尾完整执行 保密性

锁的坏处:阻止了多线程并发运行,效率大大降低,由于可以纯在多个锁不同线程持有不同的锁并且试图获取对方的锁,可能会出现死锁

每个线程一定会有一个名字,无法控制线程的调度,通过其他方法影响线程调度,死锁 互斥 生产者和消费者

同步就是协同步调按照预定的先后顺序运行eg:你说完我在说

并发不是同步在程序中

线程的几种状态:新建 就绪 运行态 死亡

等待(阻塞)

线程池:

  • 我们把任务放进队列中去,然后开N个线程,每个线程都去队列中取一个任务,执行完了之后告诉系统说我执行完了,然后接着去队列中取下一个任务,直至队列中所有任务取空,退出线程。

使用线程池:

  • 由于线程预先被创建并放入线程池中,同时处理完当前任务之后并不销毁而是被安排处理下一个任务,因此能够避免多次创建线程,从而节省线程创建和销毁的开销,能带来更好的性能和系统稳定性。

以上是关于关于线程的主要内容,如果未能解决你的问题,请参考以下文章

关于守护线程定义

关于GUI渲染线程与JS引擎线程的那些事

关于线程池

关于java多线程中守护线程的理解

关于线程池

关于多线程