
多线程
小灰灰要减肥
java小菜鸟一枚
展开
-
Lock接口获取锁的方法lock,tryLock,lockInterruptibly
lockpackage com.yf.reentrantLock;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class DemoLock { public static void main(String[] args) { int proLen=1; //一个生产者线程 int conLen=1; //一个原创 2021-03-16 13:09:06 · 328 阅读 · 0 评论 -
ThreadPoolExecutor应用
ThreadPoolExecutor JDK能够提供的线程池, 大家可以往这个线程池里面扔东西,让它自己去运行,首先看戏如何定义一个线程池:这里面有7个 参数:public ThreadPoolExecutor(int corePoolSize, 核心线程数int maximumPoolSize, 最大线程数long keepAliveTime, 生存时间,线程多久没干活请归还操作系统TimeUnit unit,生存时间的单位BlockingQueue workQueue, 任务队列Thre原创 2021-01-22 14:43:15 · 180 阅读 · 1 评论 -
ThreadLocal 详解
两个线程共同访问一个对象name的值先被t1线程改成"zhangsan",又被t2线程改成"lisi",所以最后打印出来是"lisi";定义一个Person类public class Person { String name;}定义两个线程访问这个同一个对象public class Demo01 { volatile static Person person=new Person(); public static void main(String[] args)原创 2021-01-20 13:09:54 · 96 阅读 · 0 评论 -
LockSupport 详细应用
locksupport是一个阻塞线程的锁LockSupport.park方法:park方法,使当前线程阻塞住代码运行结果:当i=5的时候,线程阻塞,程序不往下运行public class LockSupport01 { public static void main(String[] args) { Thread t=new Thread(()->{ for (int i = 0; i <10 ; i++) {原创 2021-01-18 11:58:13 · 174 阅读 · 0 评论 -
ReentrantLock应用
package djs.reentrantlock;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class ReentrantLock01 { //ReentrantLock是可重入锁,可冲入锁,某个线程已经获得这把锁,可以再次获得这把锁而不会出现死锁 // ReentrantLock和synchronized 的区别? //1. R原创 2021-01-16 11:39:27 · 162 阅读 · 0 评论