并发编程与线程安全

并发基本概念

  

并发:同时拥有两个或者多个线程,如果程序在单核处理器上运行多个线程将交替地换入或者换出内存,这些线程是同时“存在”的,每个线程都处于执行过程中的某个状态,如果运行在多核处理器上,此时,程序中的每个线程都将分配到一个处理器内核上,因此可以同时运行。

考虑多线程并发时,大部分是多线程操作相同的资源,保证线程安全,合理使用资源。

1、如何理解线程安全呢?

    代码中所谓的进程有多个线程同时运行,而这些线程,可能同时运行同一段代码,如果每次运行结果与单线程运行结果是一样的,而其他变量的值,也是和预期是一样的,我们就认为这是线程安全的,简单来说,就是并发环境下,得到结果和我们预期正确结果是一致得。

 2、如何理解线程不安全呢?

    线程不安全,不提供数据访问保护,有可能出现线程先后更改数据,造成所得到得数据是脏数据,也可能是计算时出现得错误。

3、并发的优势与风险

  

扫描二维码关注公众号,回复: 4656747 查看本文章

优势:

    一:速度,系统同时处理多个请求,那么等待的时间就会变短,响应更快,复杂的操作可以分成多个进程同时执行,这就加快处理速度。

    二:设计,程序设计在某些情况下更简单,也可以有更多的选择。

    三:资源利用,CPU能够在等待IO的时候做一些其他的事情。

缺点:

    一:安全性,多个线程共享数据时,可能会产生于期望不相符的结果。

    二:活跃性,某个操作无法继续进行下去时,就会发生活跃性问题。比如死锁,饥饿等问题。

    三:性能,线程过多时会使得,CPU频繁切换,调度时间增多,同步机制,消耗过多内存。 

总结:

CPU多级缓存,缓存一致性,乱序执行优化。

Java内存模型,JMM规定,抽象结构,同步八种操作及规则。

Java并发的优势与风险。

猜你喜欢

转载自blog.csdn.net/dabiaoge33/article/details/83091381