多线程基础

多线程基础总结,后期会继续总结~~~~~~~` 1.多线程基础 2.线程的启动 3.实例变量与线程安全 4.停止线程 5.suspend()和resume()方法(已基本弃用 ) 6.sleep方法 7.yeild方法 8.join方法 9.wait()、notify()和not...

2017-10-01 11:14:32

阅读数 163

评论数 0

多线程---Exchanger

一、概述 Exchanger 类表示一种会合点,两个线程可以在这里交换对象。两个线程各自调用 exchange 方法进行交换,当线程 A 调用 Exchange 对象的 exchange 方法后,它会陷入阻塞状态,直到线程B也调用了 exchange 方法,然后以线程安全的方式交换数据,之后线程...

2018-03-26 19:53:47

阅读数 42

评论数 0

LockSupport

1.可以先unpark然后再park package testSpringMVC; import java.util.concurrent.locks.LockSupport; public class Test { public static void main(String[] args)...

2018-03-12 20:42:59

阅读数 58

评论数 0

AQS

一、什么是AQS 即AbstractQueuedSynchronizer,中文名:抽象队列式同步器 二、框架 它维护了一个volatile int state(代表共享资源)和一个FIFO线程等待队列(多线程争用资源被阻塞时会进入此队列)。这里volatile是核心关键词。 A...

2018-01-15 21:58:35

阅读数 133

评论数 0

atmoic类

从JDK1.5开始引入了java.util.concurrent.atomic包,方便程序员在多线程情况下进行无锁的原子操作,但是由于CPU的架构不同,提供的原子指令不一样,也有可能需要某种形式的内部锁,所以也不能完全保证线程不被阻塞! 在atmoic包里一共有12个类,四种原子更新方式: ⑴原子...

2017-12-29 20:50:09

阅读数 266

评论数 0

手写线程池

1.手写之前首先展示一张原理图: 这里面有几个核心点: ⑴线程池里的核心线程数与最大线程数 ⑵线程池里真正工作的线程worker ⑶线程池里用来存取任务的队列BlockingQueue 顺便补充点阻塞队列的知识: add 增加一个元索 ...

2017-12-03 14:27:41

阅读数 1343

评论数 1

线程间的通讯方式

1.利用队列实现线程间的通讯这里用的是java.util.concurrent包中linkedBlockingQueue 来进行线程间交互。⑴java.util.concurrent.LinkedBlockingQueue 是一个基于单向链表的、范围任意的(其实是有界的)、FIFO 阻塞队列。访问...

2017-10-28 13:50:57

阅读数 113

评论数 0

volatile

1.主要作用 使变量在多个线程间可见 先看一段代码,假如线程1先执行,线程2后执行: //线程1 boolean stop = false; while(!stop){ doSomething(); } //线程2 stop = true;        这段代码是很典型的一段代码,...

2017-10-04 22:45:52

阅读数 80

评论数 0

ReentrantLock

1 synchronized和lock 1.1 synchronized的局限性 synchronized是java内置的关键字,它提供了一种独占的加锁方式。synchronized的获取和释放锁由JVM实现,用户不需要显示的释放锁,非常方便。然而synchronized也有一定的局限性,例如: ...

2017-08-31 16:04:53

阅读数 451

评论数 0

java.util.concurrent包下的几个常用类

concurrent包是常用多线程的相关包,主要有如下类 第一类  原子类:用在多个线程共同操作一个计数的情况 AtomicLong AtomicInteger   第二类 lock和condition condition是从lock中得到的,所以在使用时,在执...

2017-07-16 20:20:53

阅读数 456

评论数 0

CyclicBarrier CountDownLatch以及Semaphore

1.CyclicBarrier 它主要的方法就是一个:await()。await() 方法没被调用一次,计数便会减少1,并阻塞住当前线程。当计数减至0时,阻塞解除,所有在此 CyclicBarrier 上面阻塞的线程开始运行。在这之后,如果再次调用 await() 方法,计数就又会变成 N-1,新...

2017-06-17 09:56:01

阅读数 121

评论数 0

ReentrantLock和Synchronized对比

ReentrantLock 类实现了 Lock,拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候,在激烈争用情况下性能更好  Lock 和 synchronized 有一点明显的区别 —— lock 必须在 finally 块中释放。否则,如果受保护...

2017-06-15 22:27:42

阅读数 190

评论数 0

线程池

1.为什么使用线程池 ⑴避免创建和销毁线程的系统开销 ⑵控制最大并发数,防止阻塞 ⑶对线程进行简单管理,如延迟执行 2.在Java中,线程池的概念是Executor这个接口,具体实现为ThreadPoolExecutor类,ThreadPoolExecutor提供四个构造函数。 //五个参数的构造...

2017-06-11 10:15:09

阅读数 132

评论数 0

锁的种类

1、自旋锁 ,自旋,jvm默认是10次吧,有jvm自己控制。for去争取锁 2、阻塞锁 被阻塞的线程,不会争夺锁。 3、可重入锁 多次进入改锁的域 4、读写锁 5、互斥锁 锁本身就是互斥的 6、悲观锁 不相信...

2017-05-06 11:42:28

阅读数 217

评论数 0

ThreadLocal

一、主要作用 每个线程绑定自己的值 ThreadLocal类提供的几个方法   ⑴public T get() { } ⑵public void set(T value) { } ⑶public void remove() { } ⑷protected T initialValue() ...

2017-05-02 21:54:58

阅读数 128

评论数 0

synchronized

0.synchronized原理 1.synchronized同步方法 1.1方法内部私有变量为线程安全,实例变量非线程安全 1.2synchronized取得的都是对象锁 1.3A线程持有object对象的Lock锁,B线程可以调用object对象的非synchronized方法,但不可...

2017-04-19 22:21:41

阅读数 145

评论数 0

ReentrantReadWriteLock

1:典型系统结构,左侧是功能树,右侧就是一些常见的table或者表单之类的。为了每一个功能,单独分离出来,采用iframe。  2:ajax上传文件。  3:加载别的网站内容,例如google广告,网站流量分析。 4: 在上传图片时,不用flash实现无刷新。 5: 跨域访问的时候可以用到if...

2017-03-22 20:42:41

阅读数 114

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭