Java并发编程学习笔记(一)

Java并发编程学习笔记(一)

==============================================

  此篇主要记录一些并发编程的基本概念和知识点。为后面的学习做好铺垫。

#

1、进程之间相互通信的机制:Socket、共享内存、信号量、文件、信号处理。

2、促进并发的因素:

    (1)、资源利用:程序的运行过程中,可能会有输入输出等操作,在这期间可以让其他程序获取CPU的执行权,充分利用系统资源。
    (2)、公平:当用户有多个程序需要运行时,可以用CPU时间偏轮转的方式,可以让每个程序都获得执行的权利,不用等到让一个程序执行完了之后,另一个程序
才获得执行。
    (3)、方便:写多个程序协调处理同一个任务,这样做有时可以获得更加令人满意的结果。

3、线程:有时被称为轻量级的进程,在很多操作系统中,线程被作为程序调度的基本单元。

    同一进程内,可以有多个线程同时存在,他们共享进程范围内的资源,如内存和文件句柄等。但是每个线程都有自己的程序计数器、栈和本地变量等。同一进程
内的多个线程可以被不同的CPU去处理。
    在没有明确的调度算法时,进程内的各个线程根据资源情况同步或异步的执行。线程可以共享进程的内存地址空间,实现线程间的通信,但对于此类资源需要进
程合理调度、分配而去利用。没有实现共享数据的同步管理,可能会造成严重的后果。

4、上下文切换:当调度程序临时挂起当前运行的线程时,另一个线程开始运行。

5、定时器:Timer用来调度一些稍后运行的任务,也可以是只运行一次或者周期性运行的任务,Timer只是实现了程序在时间上调度的先后顺序,并不能保证线程安全,甚至有时可能使程序的执行更加复杂

6、状态:在线程中通常一个对象的状态就是他的数据,存储在状态变量中。程序可以通过外部可见的行为(方法)改变对象的状态。

7、共享:指一个变量可以被多个线程访问;可变指变量的值在生命周期内可以改变。

8、线程安全是在不可控制的并发访问中保护数据。一般只要有多于一个的线程访问给定的状态变量,并且有线程可能会对进行写入操作,则需要同步协调线程对该对象的访问。java中首要的同步机制是synchronized关键字,它提供了独占锁。还有volitile修饰符,体哦概念股显示锁和原子操作。

9、对象的安全性:一个对象是否是线程安全首先是取决于他会被多少个线程访问。然后是线程会对对象进行何种操作,如果线程会改变对象的状态,则需要同步该对象的状态。

10、保证变量的安全:

    (1) 不要跨线程共享变量
    (2) 把变量的状态修饰为不可变
    (3) 在任何访问状态变量的时候都使用同步

你可能感兴趣的:(java并发编程)