多线程
多线程
寸心难寄 发表于3个月前
多线程
  • 发表于 3个月前
  • 阅读 3
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

1. 多线程

1.1进程

进程是一个实体。每一个进程都有它自己的地址空间。进程是一个“执行中的程序”。

1.2线程

一个进程中可以包含若干个线程 

1.3线程与进程的区别

1.3.1地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。
1.3.2通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。
1.3.3调度和切换:线程上下文切换比进程上下文切换要快得多。

1.3.4在多线程OS中,进程不是一个可执行的实体。

eg: 

QQ 进程

给范冰冰聊天 线程

给普京聊天 线程

1.4线程的状态

新建态,就绪态,运行态,阻塞态,消亡态

示意图

 

1.5创建线程的方式

1.5.3.1实现Runnable接口,重写run方法

1.5.3.2直接继承Thread类

1.5.3.3实现Runnable接口后使用线程池ThreadPool

    eg: 企业中推荐使用该方法去创建线程,想了解具体请查看【java线程池】

           https://my.oschina.net/u/2505908/blog/1476242

    ExecutorService cachedThreadPool = Executors.newCachedThreadPool();

1.5.3.4实现Callable接口

1.6多线程安全问题

1.6.1产生原因

多个线程可以利用所拥有的共享资源

1.6.2解决思想

就是将多个 [ 操作共享数据 ]的线程 代码封装起来,

当有线程在执行这些代码的时候,其他线程是不可以参与运算的,

必须要当前线程把这些代码都执行完毕后,其他线程才可以参与运算。

比如synchronized代码块

共有 人打赏支持
粉丝 0
博文 1
码字总数 458
×
寸心难寄
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: