Java多线程(一)

    一直以来Java都有些晦涩难懂,都有哪些呢?类的继承关系、泛型的应用、JVM等,当然也有多线程,也许说没有并发的程序毫无意义或没劲,很片面......但是多线程应用下的各种并发问题,是很让人头疼的事。这里简单的总结一些多线程的特点和问题,后续会有更深入的理解和总结。引用一句经典“编写正确的程序很难,而编写正确的并发程序则难上加难”,难在哪里呢?

一、并发发展史

        早期在没有操作系统的时代,计算机只能执行一个程序,这是对稀缺的计算机资源的浪费,直至操作系统的出现,计算机可以运行多个程序,操作系统会为每个程序(进程)分配运行时资源(内存、文件句柄、安全证书),同时进程间可以通过通信机制交换数据。这提高了计算机的资源利用率,提升了用户和程序运行的公平性,当然也有便利性。

二、多线程的优势

  • 降低程序的并发和维护成本,提升复杂应用程序的性能(线程可以将异步工作流转换为串行工作流,模拟人可以在某一时间段同时完成多个任务).
  • 降低代码复杂度,使代码更容易编写、阅读、维护。

三、线程的矛盾

  1. 安全性:共享数据,当多个线程同时访问共享数据,线程的时序问题,可能导致错误的结果。   
  2. 活跃性:共享数据,当多个线程同时请求访问共享数据时,会面临“当某个操作无法继续执行下去”的活跃问题,如多个线程请求访问资源排队问题,如果某个线程一直占用资源不释放,其他线程将陷入请求等待的死循环中,死锁、饥饿、活锁。
  3. 性能:服务时间过长、响应不灵敏、吞吐率过低、资源消耗过高、可伸缩性低。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值