码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA----并发学习

时间:2017-02-25 19:58:24      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:常用   --   切换   方法   并发   情况   对象   并行   意思   

    既然说到并发那么就先说几个相关的概念

    同步与异步

    同步和异步一般用来形容一次方法的调用, 同步调用一开始,调用者必须等到方法调用返回后,才能够继续后面的操作.异步调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续操作

    并发与并行

    并发与并行是2个容易混淆的概念,他们都可以表示2个或2个以上的任务同时执行,但是偏重点不一样,并发偏重于多个任务替换执行,而并行是真正意义上的"同时执行",严格来说,并行的多个任务是真实的同时执行,而并发来说,这个过程只是交替执行,一会运行A任务,一会运行B任务,CPU在两者之间快速切换,即使多个任务是串行并发的,由于切换速度很快,就造成了多任务间是并行运行的错觉

    实际上,如果系统内只有一个CPU,而使用多线程任务,那么真实环境中这些任务是不可能真实并行的.毕竟一个CPU一次只能运行一条指令,这种情况下多线程就是并发的,而并不是并行;真实的并行只可能出现在多CPU的系统中

    临界区

    临界区用来表示公共资源或者说是共享数据,可以被多个线程使用,但是每一次只能有一个线程使用它,一旦临界区资源被使用时,其他线程想要使用这个资源,就必须等待,在并行的程序中,临界区是保护的对象,如果意外出现多个线程同时对临界区做出修改,那么就会造成数据的错误

    阻塞与非阻塞

    阻塞与非阻塞通常用来形容多线程的互相影响.比如一个线程占用了临界区资源,那么其他所有需要这个资源的线程就必须在这个临界区进行等待,等待就会造成阻塞,此刻,如果占用资源的线程一直不愿意释放资源,那么其他阻塞在这个临界区的线程都不能正常工作,非阻塞的意思与之相反,它强调的是没有一个线程可以妨碍其他线程的执行,所有线程都会尝试不断向前执行;

    

 

    

    

        

 

JAVA----并发学习

标签:常用   --   切换   方法   并发   情况   对象   并行   意思   

原文地址:http://www.cnblogs.com/yidigo/p/6442391.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!