您的位置:首页 > 编程语言 > Java开发

Java并发概述

2016-03-08 18:47 387 查看
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中的大量的有关线程同步操作的类
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: