操作系统
文章平均质量分 73
KoJJ
这个作者很懒,什么都没留下…
展开
-
java多线程学习(二)
一 共享资源 多线程经常会共享一些资源(内存、IO等)。这类资源被称为“临界资源”,要保证所有对这类资源访问的线程处于一种互斥的状态,当有一个线程在访问的时候,其他需要访问相同资源的线程应当处于阻塞状态。 这里需要说一下原子操作,原子操作是一个不能被打断的操作,也就是当CPU从一个线程切换到另一个线程的时候,失去时间片的线程中的原子操作只要开始,就必须会执行完毕,而不会处于一种未执行完毕的中间原创 2017-05-11 11:03:58 · 203 阅读 · 0 评论 -
java多线程学习(三)
一 线程之间的协作 1 如何协作 (1)多线程的程序在工作的时候,使用Synchronized、Lock等可以满足线程之间访问共享资源的互斥操作。但很多时候,线程之间不只有互斥的关系,还有协作的关系。比如,有三个线程,t1,,t2,t3,t2需要在t1完成之后才能开始操作,t3需要在t2完成之后才能开始操作。这就是经典的“生产者-消费者”模式。 实现这种模式的方法,可以让t1开始运行,然后t原创 2017-05-12 15:27:37 · 199 阅读 · 0 评论 -
并发与并行的区别
并发是指在一个时间段,可以有多个动作在执行。在宏观上,并发的多个动作,可以同时执行;但是在微观上,CPU的时间片在并发的多个动作之间切换。并发所强调的是,系统在同一时间段内“处理”多件事情的能力,并不要求多个动作在某些时刻同时执行。 并行则是指在同一个时刻,有多个动作在同时执行。并行强调的是系统在同一时间“做”多件事情的能力。在微观上,并行的程序是真正的在同时执行。 知乎里有人举了一个原创 2017-05-09 17:19:47 · 237 阅读 · 0 评论 -
进程与线程
1 定义 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位。 2 关系 一个进程中至少有一个线程(主线程),但是一个进程中也可以创建多个线程。进程不依赖线程,可以独立存在。 线程依赖于进程存在,可以与所属进程中的其他线程共享资源。 3 区别 (1)线程的划分尺度原创 2017-05-09 17:29:02 · 310 阅读 · 0 评论 -
线程安全
线程安全是指,当多个线程,执行同一段代码,或是访问同一个资源(共享资源)时,不会出现不确定的情况。 编写线程安全的代码,依靠的是线程同步,在Java中,一般使用synchronized关键字,保证线程同步。当一个线程在执行临界代码或是临界资源之前,线程首先要获得synchronized的锁,如果其他线程正处于临界区,那么该线程无法获得锁,将会被阻塞;如果获得锁,那么该线程将进入临界区,同原创 2017-05-10 10:54:09 · 166 阅读 · 0 评论 -
volatile和synchronized的区别
比较一下volatile和synchronized的不同是最容易解释清楚的。volatile是变 量修饰符,而synchronized则作用于一段代码或方法;看如下三句get代码: int i1; int geti1() {return i1;} volatile int i2; int geti2() {return i2;} int i3; synchronized int geti转载 2017-05-10 12:11:24 · 181 阅读 · 0 评论