多线程
摸鱼小助手03
这个作者很懒,什么都没留下…
展开
-
线程池
ThreadPoolExecutorExecutors.newCachedThreadPool(无界线程池,自动线程回收) Executors.newFixedThreadPool(固定大小的线程池); Executors.newSingleThreadExecutor(单一后台线程);Core and maximum pool sizes 核心和最大线程池数量参数 翻译 ...转载 2020-05-07 17:51:57 · 287 阅读 · 0 评论 -
阻塞队列
1、阻塞队列阻塞队列与普通队列的区别在于, 当队列是空的时,从队列中获取元素的操作将会被阻塞, 或者当队列是满时,往队列里添加元素的操作会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素。 同样,试图往已满的阻塞队列中添加新元素的线程同样也会被阻塞,直到其他的线程使队列重新变得空闲起来,如从队列中移除一个或者多个元素,或者完全清空队列,阻塞队列(Blo原创 2017-11-08 22:17:01 · 387 阅读 · 0 评论 -
线程池的参数
ThreadPoolExecutor类可设置的参数主要有: 1、corePoolSize 核心线程数,核心线程会一直存活,即使没有任务需要处理。当线程数小于核心线程数时,即使现有的线程空闲,线程池也会优先创建新线程来处理任务,而不是直接交给现有的线程处理。 核心线程在allowCoreThreadTimeout被设置为true时会超时退出,默认情况下不会退出。 2、maxPoolSize转载 2017-08-24 14:19:56 · 4185 阅读 · 0 评论 -
java并发编程的知识点
1.什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。 2.线程和进程有什么区别? 线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内转载 2017-08-22 16:47:42 · 291 阅读 · 0 评论 -
乐观锁和悲观锁
悲观锁:一段执行逻辑加上悲观锁,不同线程同时执行时,只能有一个线程执行,其他的线程在入口处等待,直到锁被释放.乐观锁:一段执行逻辑加上乐观锁,不同线程同时执行时,可以同时进入执行,在最后更新数据的时候要检查这些数据是否被其他线程修改了(版本和执行初是否相同),没有修改则进行更新,否则放弃本次操作.从解释上可以看出,悲观锁具有很强的独占性,也是最安全的.而乐观锁很开放,效率高,安全性比悲观锁低,因为在原创 2017-08-21 20:07:33 · 413 阅读 · 0 评论 -
volatile关键字
volatile关键字通过使用volatile关键字,强制从公共内存中读取变量的值。 主要作用,使变量在多个线程间可见。 volatile关键字的没有原子性。 synchronized具有原子性、可见性。原子性原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。 一个很经典的例子就是银行账户转账问题: 比如从账户A向账户B转1000元,那么必然包括原创 2017-08-20 23:01:57 · 245 阅读 · 0 评论 -
线程池
部分转自:http://www.cnblogs.com/exe19/p/5359885.html1、线程池如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?在Java中可以通过线转载 2017-06-27 16:09:05 · 233 阅读 · 0 评论 -
java线程的状态
部分内容转自:方腾飞的《java并发编程的艺术》java线程有6种不同的状态,分别为:1、new,初始状态,线程被构建,但是还没有调用start()方法。2、runnable,运行状态,java线程将操作系统中的就绪和运行两种状态笼统的称作“运行中”。3、blocked,阻塞状态,表示线程阻塞于锁4、waiting,等待状态,表示线程处于等待状态。5、timed waiti转载 2017-07-12 15:34:36 · 320 阅读 · 0 评论 -
多线程问题总结
一、多线程的实现方式 java提供了两种方式,一个是继承Thread类,另一个是实现Runnable接口,由于java不支持多继承,所以在多继承的时候,我们得优先选用 实现 Runnable接口,因为我们可以通过实现接口的办法,间接的实现多继承。 二、wait()和sleep()的区别 其次问到了wait()和sleep()的区别,这两个方法区别在于:sleep()是Thread类的,而wai原创 2017-06-30 15:23:43 · 230 阅读 · 0 评论 -
ConcurrentHashmap使用
部分转自:http://blog.csdn.net/wisgood/article/details/19338693 http://caoyaojun1988-163-com.iteye.com/blog/1758289 ConcurrentHashMap融合了hashtable和hashmap二者的优势。hashtable是做了同步的,hashmap未考虑同步。所以hashmap在单线程情况下转载 2017-06-28 21:50:26 · 610 阅读 · 0 评论 -
java同步锁-实现买火车票
转自:http://blog.csdn.net/lianqiangjava/article/details/12652201/比如火车卖票,火车票是一定的,但卖火车票的窗口到处都有,每个窗口就相当于一个线程,这么多的线程共用所有的火车票这个资源。如果在一个时间点上,两个线程同时使用这个资源,那他们取出的火车票是一样的(座位号一样),这样就会给乘客造成麻烦。比如下面程序: 程序的运行结果:转载 2017-06-28 17:25:01 · 3544 阅读 · 1 评论 -
synchronized的几个注意事项
当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 1、一个线程在访问一个对象的同步方法时,另一个线程可以同时访问这个对象的非同步方法。 2、一个线程在访问一个对象的同步方法时,另一个线程不能同时访问这个同步方法。 3、一个线程在访问一个对象的同步方法时,另一个线程不能同时访问这个对象的另一个同步方法。 在java中每个类对应一把锁,每个原创 2017-06-28 16:45:05 · 1611 阅读 · 0 评论