Java并发概述

1、并发和多线程
并发的作用在于充分利用资源(多处理器or多核),在有限的资源下进行多任务的处理。
并发的概念表现在编程上,则为多线程编程,常见的实例:java web中的servlet就是采用的多线程机制。
线程作为轻量进程,本身不具有资源,而进程才是拥有资源的主体。

2、为什么使用多线程
多线程建立在操作系统的产生之后,在此之前,机器或者说处理器处理程序时,只能按照单个的执行流程进行,即所谓的单线程。
单线程所遇到的严重问题在于,当程序需要处理例如输入输出IO事件,与其他的IO设备交互并等待结果时,会使得CPU处于高度空闲状态,并未得到充分的利用,如果可以将此时的CPU用于处理其余的任务,等待IO结果返回时再继续执行,则达到了处理器资源的充分利用,同时也使得用户感受到的是多个任务在同时进行。

3、多线程编程需要注意的问题:多个线程之间的数据同步问题
线程的安全性:事件/任务会正确的发生;
线程的活跃性:事件/任务会在程序运行过程中发生;
线程的性能:线程调度会导致频繁的上下文切换,引起过多的开销。
达到的目标:正确的任务尽快的发生。

4、Java中实现多线程的方式
继承Thread类
实现Runnable接口
使用Excutor框架 Java SE5之后支持

如果多个线程同时访问一个可变的状态变量时没有做必要的同步,可能会引发数据错误,导致意想不到的结果;
解决的方法有3个:
1、不在线程间共享该状态变量
2、将状态变量修改为不可变的变量
3、在访问状态变量时使用同步

线程间同步,保证复合操作的原子性,例如 读取-修改-写入 这样的如何操作,要么一起执行,要么不执行。

对象的内置锁 TimerTask

大多数情况下,只同步需要同步的代码块,而不是整个方法;

synchronized(lock)中的lock最好是类的class对象

java.util.concurrent中的大量的有关线程同步操作的类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值