美文网首页
多线程相关

多线程相关

作者: 萝卜枣 | 来源:发表于2019-06-19 09:01 被阅读0次

1、Thread/runnable

1)继承Thread类

2)实现Runnable接口

2、两种启动线程方法的区别

1)共同点

必须调用Thread产生线程,调用start开启线程

2)不同点

继承Thread类是单继承,用接口比继承更灵活;继承Thread每继承一次必须产生相应Thread,而Runnable只用产生一个实例。

3、start方法和run方法的区别

start:开启线程,处于就绪状态

run:线程体,包含线程执行内容

4、线程间通信

1)synchronized关键字

a. volatile 

volatile是变量修饰符,其修饰的变量具有可见性。可见性也就是说一旦某个线程修改了该被volatile修饰的变量,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,可以立即获取修改之后的值。volatile禁止指令重排 

b. synchronized

synchronized可作用于一段代码或方法,既可以保证可见性,又能够保证原子性。可见性体现在:通过synchronized或者Lock能保证同一时刻只有一个线程获取锁然后执行同步代码,并且在释放锁之前会将对变量的修改刷新到主存中。原子性表现在:要么不执行,要么执行到底。

 总结(1)从而我们可以看出volatile虽然具有可见性但是并不能保证原子性。

(2)性能方面,synchronized关键字是防止多个线程同时执行一段代码,就会影响程序执行效率,而volatile关键字在某些情况下性能要优于synchronized。

但是要注意volatile关键字是无法替代synchronized关键字的,因为volatile关键字无法保证操作的原子性。

https://blog.csdn.net/seu_calvin/article/details/52370068

2)sleep / wait

sleep()不释放同步锁,wait()释放同步锁。

用法上的不同是sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interrupt()来强行打断;wait()可以用notify()直接唤起。

sleep是Thread类的静态方法。sleep的作用是让线程休眠制定的时间,在时间到达时恢复,也就是说sleep将在接到时间到达事件事恢复线程执行;wait是Object的方法,也就是说可以对任意一个对象调用wait方法,调用wait方法将会将调用者的线程挂起,直到其他线程调用同一个对象的notify方法才会重新激活调用者

5、线程池

1)好处

a. 降低资源消耗

b. 提高响应速度

c. 提高线程的可管理性

2)ThreadPoolexecutor

工作流程: 

首先线程池判断基本线程池是否已满;其次线程池判断工作队列是否已满;最后线程池判断整个线程池是否已满。

相关文章

  • 多线程相关

    引文: 多线程相关 OC 语言相关 内存管理相关 UI视图相关 RunLoop相关 GCD NSOperation...

  • 网络相关

    引文: 多线程相关 OC 语言相关 内存管理相关 UI视图相关 RunLoop相关 HTTP协议 HTTPS与网络...

  • iOS面试

    目录 UI视图相关 存储相关 OC 语言特性相关 Runtime相关 内存管理相关 Block相关 多线程相关 R...

  • iOS多线程之NSOperations

    相关文章:iOS多线程之NSThreadiOS多线程之GCD NSOperation(任务)与NSOperatio...

  • Android下多线程的实现

    Android下多线程相关 线程安全相关问题参考:java内存模型与线程 android下与多线程有关的主要有以下...

  • OC 语言相关

    引文: 多线程相关 OC 语言相关 内存管理相关 UI视图相关 RunLoop相关 分类 关联对象 扩展 代理 通...

  • 多线程相关

    1、Thread/runnable 1)继承Thread类 2)实现Runnable接口 2、两种启动线程方法的区...

  • 多线程相关

    1.GCD 同步/异步和串行/并发 dispatch_barrier_async dispatch_group (...

  • 多线程相关

  • 多线程相关

    1. 多线程使用的优缺点? 优点: (1)多线程技术使程序的响应速度更快 (2)当前没有进行处理的任务可以将处理器...

网友评论

      本文标题:多线程相关

      本文链接:https://www.haomeiwen.com/subject/dmrlqftx.html