![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java并发
文章平均质量分 78
丹_妮
这个作者很懒,什么都没留下…
展开
-
3、线程安全_synchronized
线程安全性概念:一个类或程序在多线程环境下,其行为与预期结果一致的特性。 何时会产生线性安全问题?当多个线程同时访问临界资源时(一个对象、一个文件、一个数据库、对象的属性)会导致程序运行结果与预期结果不同,即出现线性安全问题。临界资源:在一段时间内只允许一个线程访问的资源注:不过,当多个线程执行一个方法,方法内部的局部变量并不是临界资源,因为方法是在栈上执行的,而Java栈原创 2016-07-25 21:24:20 · 344 阅读 · 0 评论 -
15、Java并发面试题
Java中如何停止一个线程Jdk1.0有stop()、suspend()、resume()的控制方法,但由于潜在的死锁威胁因此在后序的JDK中被弃用。之后的Java API没有提供兼容其线程安全的停止线程的方法。当run()或者call()方法执行完的时候线程会自动结束。如果想手动结束线程,可利用volatile布尔变量来退出run()方法的循环或者取消任务来中断线程。一个线程原创 2016-08-12 19:26:21 · 3213 阅读 · 0 评论 -
14、java并发面试题
概念性问答题:操作系统的设计,归结为3点:(1)以多进程形式,允许多个任务同时运行(2)以多线程形式,允许单个任务分成不同的部分运行(3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面运行线程之间和进程之间共享资源。线程的基本概念、线程的基本状态以及状态之间的关系?(1)概念:l 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运原创 2016-08-12 19:25:23 · 392 阅读 · 0 评论 -
13、生产者消费者模型_两种实现方式2
下面先使用Object.wait()和Object.notify()、非阻塞队列实现生产者-消费者模式:12345678910111213141516171819202122232转载 2016-08-12 19:23:49 · 425 阅读 · 0 评论 -
13、生产者消费者模型_两种实现方式
wait()、notify()和notifyAll()是Object类中的方法:12345678910111213141516171819202122232425转载 2016-08-12 19:20:28 · 953 阅读 · 0 评论 -
11、线程间协作wait notify
转载:http://blog.csdn.net/ns_code/article/details/17225469在Java中,可以通过配合调用Object对象的wait()方法和notify()方法或notifyAll()方法来实现线程间的通信。在线程中调用wait()方法,将阻塞等待其他线程的通知(其他线程调用notify()方法或notifyAll()方法),在线程中调用notify(转载 2016-08-12 18:57:17 · 236 阅读 · 0 评论 -
12、阻塞队列
非阻塞队列VS几种主要的阻塞队列非阻塞队列:PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口)阻塞队列:(1)ArrayBlockingQueue:基于数组实现的一个阻塞队列,在创建ArrayBlockingQueue对象时必须制定容量大小。并且可以指定公平性与非公平性,默认情况下为非公平的,即不保证等待时间最长的队列最优先能原创 2016-08-08 21:38:12 · 347 阅读 · 0 评论 -
10、java线性安全_并发容器_conCurrentHashMap
concurrentHashMap并发容器简介:concurrentHashMap代替同步Map(Collection.synchronized(new HashMap())因为HashMap是根据散列值分段存储的,同步Map在同步的时候会锁住所有的段,而conCurrentHashMap加锁的时候根据散列值锁住散列值对应的那段(segment)提高了并发性能。conCurrentHash原创 2016-08-08 21:33:17 · 477 阅读 · 0 评论 -
7、Volatile和synchronized区别、死锁概念
Volatile变量和同步机制synchronized 、lock区别1、volatile变量是一种稍弱的同步机制在访问volatile变量时不会执行加锁操作,因此也就不会使执行线程阻塞,因此volatile变量是一种比synchronized关键字更轻量级的同步机制。2、从内存可见性的角度看,写入volatile变量相当于退出同步代码块,而读取volatile变量相当于进入同步代码块。原创 2016-08-08 21:18:03 · 1816 阅读 · 0 评论 -
9、java线性安全_同步容器
同步容器Java里面提供了一些线程安全类和并发工具,比如:同步容器、并发容器、阻塞队列、Synchronizer(比如CountDownLatch)同步容器:Vector Stack HashTable并发容器:ConcurrentHashMap(segment结构的)、CopyOnWriteArrayList阻塞队列:ArrayBlockingQueue(基于数组)、原创 2016-08-08 21:32:10 · 779 阅读 · 0 评论 -
8、Java内存模型
内存模型概念当程序运行过程中,会将计算需要的变量从主内存copy一份到cpu的高速缓存区,计算的时候直接从高速缓存读取数据和向其写入数据,当运行结束后再将高速缓存区的数据刷新到主内存中。例如:i=i+1执行过程:当线程执行这个语句时,会先从主内存中将i复制到高速缓存区,cpu执行指令+1,然后将结果写入高速缓存区,最后将高速缓存区的值刷新到主内存中。单线程不会出现错误。多线程时原创 2016-08-08 21:23:03 · 756 阅读 · 0 评论 -
6、volatile关键字
Java内存模型工作当前的java内存模型下,线程可以将变量保存在本地内存(机器的寄存器)中,而不是在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另一个线程还继续用它本地寄存器的值进行操作,造成数据的不一致。volatile['vɒlətaɪl]关键词概念:Volatile声明的变量表示该变量是不稳定的,每次需要到主存中读取。具体:Volatile是一种稍弱的原创 2016-08-08 21:14:16 · 328 阅读 · 0 评论 -
5、并发编程的3个概念:原子性、可见性、有序性
并发程序正确地执行,必须要保证原子性、可见性以及有序性。只要有一个没有被保证,就有可能会导致程序运行不正确。原子性:一个操作或多个操作要么全部执行完成且执行过程不被中断,要么就不执行。可见性:当多个线程同时访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。有序性:程序执行的顺序按照代码的先后顺序执行。对于单线程,在执行代码时jvm会进行指令重排序,处理器原创 2016-08-08 21:08:56 · 7410 阅读 · 1 评论 -
1、进程与线程的区别
进程与线程的区别· 1定义:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.原创 2016-08-08 21:03:44 · 1044 阅读 · 0 评论 -
JAVA中NIO,BIO,AIO的区别
1,同步和异步是针对应用程序和内核的交互而言的。2,阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方式,说白了是一种读取或者写入操作函数的实现方式,阻塞方式下读取或者写入函数将一直等待,而非阻塞方式下,读取或者写入函数会立即返回一个状态值。 由上描述基本可以总结一句简短的话,同步和异步是目的,阻塞和非阻塞是实现方式。同步阻塞IO(JAVA B转载 2016-08-15 20:49:38 · 6240 阅读 · 4 评论 -
4、线程安全_Lock
Synchronized的缺陷Synchronized同步方法或代码块,在线程发生阻塞(等待阻塞wait、同步阻塞-互斥锁、其他阻塞-sleep、yield、join、I/O请求)时,不会释放所持有的锁,影响程序的运行效率。而Lock可以手动释放锁。Lock与Synchronized对比Lock提供了比synchronized更多的功能。但是要注意以下几点:1)Lock不是原创 2016-07-25 21:41:54 · 336 阅读 · 0 评论 -
ThreadLocal的原理和在框架中的应用
我们知道Spring通过各种DAO模板类降低了开发者使用各种数据持久技术的难度。这些模板类都是线程安全的,也就是说,多个DAO可以复用同一个模板实例而不会发生冲突。 我们使用模板类访问底层数据,根据持久化技术的不同,模板类需要绑定数据连接或会话的资源。但这些资源本身是非线程安全的,也就是说它们不能在同一时刻被多个线程共享。 虽然模板类通过资源池获取数据连接或会话,但资源转载 2016-08-13 17:31:35 · 891 阅读 · 0 评论