JDK 线程池
Executors.newCachedThreadPool(); //带缓存的 不够时自动添加
Executors.newSingleThreadExecutor(); //单个线程池 线程死掉后自动创建
Executors.newFixedThreadPool(10); //创建容纳N个线程的
Executors.newScheduledThreadPool(19); //创建定时器线程池
executo() 无返回结果
submit() 有返回结果的线程
Callable: //可返还结果的线程
ExecutorService threadpol = Executors.newSingleThreadExecutor();
Future<String> future = threadpol.submit(
new Callable<String>(){
public String call(){
return "aaaa";
}
}
system.out.print(Future.get());
);
Lock lock = new ReentrantLock(); //lock 对象
Condition condition = lock.newCondition(); // 条件. 通讯对象
condition.await(); //不是 object的 wait
condition.signal(); //唤醒
try{
lock.lock();
...
}finally{
lock.unLock();
}
ReentrantReadWriteLock rwl = ReentrantReadWriteLock(); //文件锁
rwl.readLock().lock();
rwl.writeLock().lock();
条件等待尽量使用while(){
}
多线程关键字
Executors.newCachedThreadPool(); //带缓存的 不够时自动添加
Executors.newSingleThreadExecutor(); //单个线程池 死掉后再创建
Executors.newFixedThreadPool(10); //创建容纳N个线程的
Executors.newScheduledThreadPool(19); //创建定时器线程池
Lock lock = new ReentrantLock(); //lock 互斥锁 对象
Condition condition = lock.newCondition(); // 条件. 通讯对象
Condition //条件锁
Semaphore //信号量 类似执行授权 (最多有3个人可以走)
CyclicBarrier //类似集合点 (必须3个人同时到才能走)
CountDownLatch //计数器 计时器效果 某时间点同时执行 CountDownLath a = new CountDownLath(1); a.await(); a.countDown();
Exchanger //数据交换 Exchanger a = new Exchanger()//放主线程; a.exchange("asd")
ArrayBlockingQueue //阻塞队列 ArrayBlockingQueue 啊 = new ArrayBlockingQueue(); a.put(1);//阻塞 a.add(1); //a.tack(); 获取
作者“光头的专栏”
分享到:
相关推荐
4. lock锁:Lock接口是Java并发包(java.util.concurrent.locks)提供的高级锁,相比synchronized,它提供了更细粒度的锁控制,如可中断锁、可重入锁和公平锁。ReentrantLock是Lock的一个实现,它支持锁的获取和释放...
9. **并发工具类**:Java并发包(java.util.concurrent)提供了一系列工具类,如Semaphore信号量控制并发数量,CyclicBarrier同步屏障,CountDownLatch倒计时器等,帮助开发者更高效地管理多线程。 10. **Future和...
此外,资源可能还包含了对并发工具类(如CountDownLatch、CyclicBarrier、Semaphore等)的讲解,这些工具可以帮助开发者更高效地管理和协调多线程的执行。 至于压缩包中的具体文件,虽然无法直接查看文件名称列表...
AQS是Java并发包中的抽象队列同步器,它是ReentrantLock、Semaphore等并发工具的基础,通过维护一个FIFO等待队列来管理线程的等待和唤醒。 9. **CAS(Compare and Swap)**: CAS是一种无锁算法,用于更新变量。...
7. **并发工具类**:`CountDownLatch`, `CyclicBarrier`, `Semaphore`等并发工具类在多线程协作中扮演重要角色,笔记会分析它们的功能和用法。 8. **并发设计模式**:笔记可能还会涉及一些经典的并发设计模式,如...
7. **并发工具类**:`CountDownLatch`、`CyclicBarrier`、`Semaphore`等并发工具类在多线程协同工作时非常有用。例如,`CountDownLatch`可以用来同步多个线程,`CyclicBarrier`允许一组线程等待其他线程到达某个点后...
4. **多线程**:Java提供了丰富的多线程支持,包括Thread类、Runnable接口以及并发包中的工具类。Java 7在并发编程方面也有所增强,例如Fork/Join框架用于并行计算。 5. **字符串处理**:Java 7在字符串处理上增加...
Java并发包中的Semaphore(信号量)和LockSupport工具类也常用于线程同步。Semaphore可以限制同时访问特定资源的线程数量,而LockSupport提供底层的线程阻塞和唤醒功能,更底层且灵活性更高。 CountDownLatch和...
总结来说,Java中的并发加锁机制非常灵活且强大,通过对`ReentrantLock`和`ReentrantReadWriteLock`等工具的理解和应用,可以有效地解决多线程环境下的并发控制问题。希望本文能帮助读者更好地理解和掌握Java并发...
第五章涉及多线程和Java并发包(JUC)。多线程使程序能同时执行多个任务,可以通过继承Thread、实现Runnable或使用ExecutorService来创建。Thread类提供了线程控制方法,如设置优先级、命名和线程礼让。线程的生命...
6. **多线程**:Java提供了丰富的多线程支持,包括Thread类、Runnable接口和并发包(java.util.concurrent)。学习如何创建和管理线程,以及同步机制(如synchronized关键字、锁对象和wait/notify机制)是多线程编程...
- **多线程**:Java提供了强大的多线程支持,包括Thread类、Runnable接口以及并发包中的工具类,理解线程同步和通信的概念如synchronized关键字和wait/notify机制。 - **IO流**:Java中的输入输出流体系,包括字符...
CAS 是一种基于硬件级别的指令实现的同步原语,用于.compareAndSwap,是 Java 并发包 java.utile.concurrent 中许多同步类的基础。CAS 的工作原理是首先检查要操作的变量是否是期望的值,如果是,则进行操作,否则不...
5. **原子(Atomic)**:Java并发包中的Atomic类(如AtomicInteger、AtomicBoolean)提供了原子操作,确保在多线程环境下更新变量时不会出现数据不一致的问题。这些类在高并发场景下特别有用。 6. **锁(Locks)**:...
LockSupport是Java并发包中用于线程控制的工具类,提供如`park()`和`unpark(Thread thread)`等方法。这些方法可以用来暂停和恢复线程的执行,是构建复杂并发控制的基础。 **AbstractQueuedSynchronizer (AQS)** ...
然而,在实际应用中,为了避免复杂的同步问题和提高性能,可以考虑使用Java并发包中的高级工具类,如java.util.concurrent包下的Lock、Condition、Semaphore等,这些都是对传统的synchronized和wait/notify机制的...
【描述】提到的重点在于JUC(Java并发包)中的可重入锁概念,以及与之相关的锁机制,如LockSupport工具类的使用。此外,还提到了LockSupport如何实现线程的阻塞和唤醒,以及AbstractQueuedSynchronizer (AQS) 在锁和...
java-snippet,Java学习笔记,包括算法题(leetcode),Java并发包的常见用法,系统设计,Java并法库等 netty-snippet,netty学习笔记 simple-http-server,基于springboot实现的简单文件http服务器,类似于Python一...