
多线程
狒狒你呐
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线程池
package com.fcc.jdk8api.core.thread.baseThread; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.concurrent.ArrayBlockingQu...原创 2019-11-03 23:31:11 · 109 阅读 · 0 评论 -
java死锁
public class DealThread implements Runnable { public String userName; public Object lock1=new Object(); public Object lock2=new Object(); public void setFlag(String userName){ ...原创 2018-12-06 00:37:57 · 163 阅读 · 0 评论 -
为什么volatile不能保证原子性而Atomic可以
https://blog.youkuaiyun.com/hupitao/article/details/45227891 在Java中long赋值不是原子操作,因为先写32位,再写后32位,分两步操作,而AtomicLong赋值是原子操作,为什么?为什么volatile能替代简单的锁,却不能保证原子性?这里面涉及volatile,是java中的一个我觉得这个词在Java规范中从未被解释清楚的神奇关键词,在S...转载 2018-12-08 13:03:53 · 198 阅读 · 0 评论 -
CAS并发技术(只能保证一个共享变量的原子操作,解决ABA问题,改用传统的互斥同步可能会比原子类更高效)
https://blog.youkuaiyun.com/v123411739/article/details/79561458 概述 CAS(Compare-and-Swap),即比较并替换,是一种实现并发算法时常用到的技术,Java并发包中的很多类都使用了CAS技术。CAS也是现在面试经常问的问题,本文将深入的介绍CAS的原理。 案例 介绍CAS之前,我们先来看一个例子。 上面这个例子在vola...转载 2018-12-06 01:10:36 · 2878 阅读 · 0 评论 -
Java多线程-线程池ThreadPoolExecutor构造方法和规则
https://blog.youkuaiyun.com/qq_25806863/article/details/71126867 https://www.cnblogs.com/ruiati/p/6134131.html 四种Java线程池用法解析转载 2018-12-05 01:23:34 · 138 阅读 · 0 评论 -
volatile与synchronized的区别
1、锁提供了两种主要特性:互斥(mutual exclusion) 和可见性(visibility)。 互斥即一次只允许一个线程持有某个特定的锁,因此可使用该特性实现对共享数据的协调访问协议,这样,一次就只有一个线程能够使用该共享数据。 可见性要更加复杂一些,它必须确保释放锁之前对共享数据做出的更改对于随后获得该锁的另一个线程是可见的 —— 如果没有同步机制提供的这种可见性保证,线程看...转载 2018-12-05 01:21:36 · 157 阅读 · 0 评论 -
线程依次执行,交叉执行,各种等待执行,倒计数锁存器
http://www.importnew.com/26850.html 三个线程依次执行,A->B->C public class ExecutorTest1 { public static void main(String[] args){ Thread A = new Thread(new Runnable() { @Override原创 2017-11-17 17:18:22 · 1141 阅读 · 0 评论 -
java 线程public void run()中值如何返回
Java5新增了Callable接口获得线程的返回值 package com.ronniewang; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; i原创 2017-09-29 16:07:07 · 7305 阅读 · 0 评论 -
多线程并发执行任务,取结果归集。终极总结:Future、FutureTask、CompletionService、CompletableFuture
http://www.cnblogs.com/dennyzhangdd/p/7010972.html转载 2017-11-09 14:56:37 · 430 阅读 · 0 评论 -
线程池
什么是线程池?为什么要使用它? 线程池主要用来解决线程生命周期开销问题和资源不足问题。通过对多个任务重复使用线程,线程创建的开销就被分摊到了多个任务上了,而且由于在请求到达时线程已经存在,所以消除了线程创建所带来的延迟。这样,就可以立即为请求服务,使用应用程序响应更快。另外,通过适当的调整线程中的线程数目可以防止出现资源不足的情况。 线程池的简要工作模型转载 2017-11-09 11:46:27 · 161 阅读 · 0 评论 -
synchronized修饰方法和修饰方法块(二)
synchronized 关键字,它包括两种用法:synchronized 方法和 synchronized 块。 1. synchronized 方法:通过在方法声明中加入 synchronized关键字来声明 synchronized 方法。如: public synchronized void accessVal(int newVal); synchronized 方法控制原创 2017-08-13 19:51:10 · 724 阅读 · 0 评论 -
java多线程(一)
首先讲一下进程和线程的区别: 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。 线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。 线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。 多进程是指操作系统能同时运行多个任务(程序)。 多线程是指在同一程序中原创 2016-12-26 10:53:25 · 267 阅读 · 0 评论 -
java transient简介
我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,Java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个的所有属性和方法都会自动序列化。 然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序列化,诚然,你可以让这个类来实现Extern转载 2017-01-04 12:03:12 · 308 阅读 · 0 评论 -
线程池
1.初识线程池: 根据系统自身的环境情况,有效的限制执行线程的数量,使得运行效果达到最佳。线程主要是通过控制执行的线程的数量,超出数量的线程排队等候,等待有任务执行完毕,再从队列最前面取出任务执行。 2.线程池作用: 减少创建和销毁线程的次数,每个工作线程可以多次使用 可根据系统情况调整执行的线程数量,防止消耗过多内存 3.使用 ExecutorService:线程池接口 Execu原创 2017-01-04 13:01:42 · 280 阅读 · 0 评论 -
synchronized修饰方法和修饰方法块(-)
synchronized关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。二、然而,当一个线程访问object的一个synchronized(th转载 2017-08-13 16:54:51 · 2987 阅读 · 0 评论 -
多线程的作用,对资源cpu的利用效率
多线程的作用: 1让程序和功能并行(实际上cpu还是在串行执行,只是在切换不同线程) 2提高cpu的利用率,不同线程间的io开销是不同的原创 2017-08-21 01:19:19 · 6268 阅读 · 0 评论 -
什么情况下会有线程安全问题
Q:什么情况下会有线程安全问题 A:当某个实现多线程的线程类中有实例变量时 ps:有状态,无状态对象是什么概念 有状态就是有数据存储功能。有状态对象(Stateful Bean),就是有实例变量的对象 ,可以保存数据,是非线程安全的。在不同方法调用间不保留任何状态。 无状态就是一次操作,不能保存数据。无状态对象(Stateless Bean),就是没有实例变量的对象 .原创 2017-08-21 01:12:32 · 9283 阅读 · 0 评论