java编程思想--21 并发

原创 2015年11月21日 11:27:46

学习并发编程,相当于学习一门新的语言。理解并发编程,难度不亚于理解面向对象编程。还需要看专门该主题的书籍

并发编程,在单处理器上,是看起来同时多任务;而在多处理器上,确实是同时处理多个任务。 所以,很多时候,为了看起来多任务或则,实际多任务(提高程序的速度),我们需要使用并发编程

当并行执行的任务开始产生交涉的时候,实际的并发问题开始接踵而至。
研究并发最终的原因是:如果你视而不见,将会得到其反噬。

总结:并发编程,有时候是必须使用的。不管是为了看起来并发,还是实际真的在并发; 既然使用了并发编程,就要了解其机制,从而去解决实际遇到的问题的起因。

1:并发的多面性
并发难在:实现并发的方式有多种,使用并发时需要解决的问题有多个。
并发处理的问题:速度,和设计可管理性,为了用户使用方便

 **A:更快的执行**

a:可以再多个处理器上分发多个任务
更重要的是,在单个处理器上提高速度。因为涉及到 阻塞,在单个处理器上如果没有任务阻塞的话,那么并发编程就没有了意义。

实际上,使用并发编程最吸引人的一个原因是可以产生具有可响应的用户界面!!!
比如:事件驱动的编程,是单处理器上提高性能的常见示例。

b:实现并发的方式:
一,最直接的方式,在操作系统级别使用进程;而且进程之间是彼此独立的,并发实现起来比较容易。也不会涉及到资源共享的问题?!!!
二:采用多线程的方式;像java,是因为进程涉及到具体的操作系统,而线程则不需要。从而实现java的一次编译,到处运行的要求。
但是,多线程涉及到资源共享的问题。
B:改进代码的设计
例如:仿真程序

2:基本的线程机制

并发编程把一个程序划分成多个分离的,独立运行的任务。(是指在编码阶段,程序员自己划分的?还是指运行期间,自动划分的?)
然后利用多线程机制,这些独立任务的每一个都将由执行线程来驱动。
因此,单个进程,多个线程,底层是CPU时间片划分。(ps:多个处理器的,另当别论)

总结:线程的一大好处是,使得代码不必知道到底是在单处理器还是多处理器上。使得线程机制从这个层次抽身出来!
使用线程机制,可以建立一种透明的,可扩展的程序的方法。

A:定义任务
你需要一种描述任务的方式,这可以有Runnable接口来提供。要像定义任务,只需要实现Runnable接口并编写run()方法即可。使得该任务可以执行你的命令。

版权声明:本文为博主原创文章,未经博主允许不得转载。

21.JAVA编程思想——未支持的操作

21.JAVA编程思想——未支持的操作 利用static(静态)数组Arrays.toList(),也许能将一个数组转换成List 1     代码如下 import java.util.*; ...
  • notbaron
  • notbaron
  • 2016年04月17日 09:24
  • 30335

《Java编程思想第四版》笔记---21章(3) 并发补充: volatile关键字解析

转自:http://www.cnblogs.com/dolphin0520/p/3920373.html Java并发编程:volatile关键字解析    volatile这个关键字可能很多朋友...

(29)21.3.3 原子性与易变性---Java编程思想之并发笔记

1.原子操作     原子操作时不能被线程机制中断的操作;一旦操作开始,那么一定可以在可能发生的“上下文切换”之前(切换到其它线程执行)执行完毕。     一般情况下不能用原代替同步,除非你是并发...
  • njiang
  • njiang
  • 2012年12月31日 15:42
  • 737

并发(java编程思想)笔记

package com.facaizhu.concurrency; //实现 Runnable,只表示具有一个 run 方法,但它并没有线程能力,请看 main 方法 public class Li...
  • oney139
  • oney139
  • 2012年10月08日 10:56
  • 1965

《Java编程思想第四版》笔记---21章(4) 并发补充:单例模式与双重检测

转自:http://www.iteye.com/topic/652440 首先要解释一下什么是延迟加载,延迟加载就是等到真真使用的时候才去创建实例,不用时不要去创建。  从速度和反应时间角度来讲...

(34)21.3.5 临界区---Java编程思想之并发笔记

1.     临界区:只希望防止多个线程同时访问方法内部的部分代码而不是正规方法,通过这种方式分离出来的代码段被称为临界区(critical section)。使用关键字synchronized关键字...
  • njiang
  • njiang
  • 2012年12月31日 15:45
  • 1549

java线程中断机制

1.线程进入阻塞状态有如下几个原因1.通过sleep使任务进入休眠状态 2.notify或notifyAll之前的被wait挂起的线程 3.任务在等待输入/输出 4.等待并发锁2.中断阻塞任务中...
  • JavaMoo
  • JavaMoo
  • 2017年08月09日 22:32
  • 202

Java编程思想笔记—并发1

实现并发最直接的方式是在操作系统级别使用进程。进程是运行在它地址空间内的自包容的程序。 操作系统通常会把进程互相隔离开,因此它们不会彼此干涉,这使得用进程编程相对容易一些。但Java所使用的这种...

java编程思想笔记-并发之CountDownLatch

CountDownLatch使用简介1.CountDownLatch用来同步一个或者多个任务,强制它们等待由其他任务执行的一组操作 2.CountDownLatch设定的初始值只能设置一次,不能重置...
  • JavaMoo
  • JavaMoo
  • 2017年08月11日 20:02
  • 124

java编程思想笔记---并发优先级

2017/7/31创建/* * jdk的十个优先级与操作系统之间映射的不好,所以只推荐MAX_PRIORITY,NORM_PRIORITY,MIN_PRIORITY * 三个优先级 */ pub...
  • JavaMoo
  • JavaMoo
  • 2017年07月31日 17:18
  • 144
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java编程思想--21 并发
举报原因:
原因补充:

(最多只允许输入30个字)