多线程编程

一、Thread线程

 

main thread为主线程,在主线程中开辟一个新的线程,两个线程会一并执行,互不影响,当两个线程执行完毕之后程序结束!

二、术语:线程被抢占

三、线程的属性

四、实例代码

 

五、Join and Sleep(单位毫秒)

Join:等待新开辟的线程执行结束,在执行主方法的程序

Sleep:线程休眠!停止当前线程等待对应时间!

sleep和yield功能基本一致

 

 六、线程阻塞

 七、ThreadState(判断当前线程状态)

ThreadState:为一个flag enum(枚举),通过按位的形式,可以合并数据的选项

 线程执行流程图

 八、解除阻塞Unblocking

 九、本地vs共享状态(尽量避免线程数据共享)

 本地:线程于线程之间的变量是独立的

 共享:线程之间共享一个变量信息

 静态字段在多线程中也是信息共享的

 十、线程安全

 lock加锁,只有一个线程可使用锁中内容,如果有一个线程在进行操作,那么另一个线程会进入一个假死状态,等待上一个线程结束后在执行锁中的内容!

 十一、向线程传递数据

1.使用lambda表达式传递参数

 2.使用Threead的start传递参数(传递的参数的值类型为object类型)

 十二、异常处理(try catch语句放于方法之中,新开辟的线程不会被异常捕获到)

 十三、前台和后台线程(Foreground VS Background Threads)

 

 十四、线程的优先级

 十五、信号(Signaling)

 

 十六、富客户端应用程序的线程

 

 十七、同步上下文(Synchronizationb Contexts)

 

 十八、线程池(Thread Pool)

 

 

 

原文地址:https://www.cnblogs.com/LanHai12/p/15258194.html