当前位置: 首页 > news >正文

广东万泰建设有限公司网站外网有趣的网站

广东万泰建设有限公司网站,外网有趣的网站,网站占有率,给别人做彩票网站违法吗第五部分#xff1a;Java 中的并发工具 Java 提供了多种并发工具类#xff0c;帮助开发者更好地管理和控制多线程的执行。这些工具类主要位于 java.util.concurrent 包中#xff08;可点击跳转拓展一#xff09;#xff0c;提供了比传统的 synchronized 更强大和灵活的并…第五部分Java 中的并发工具 Java 提供了多种并发工具类帮助开发者更好地管理和控制多线程的执行。这些工具类主要位于 java.util.concurrent 包中可点击跳转拓展一提供了比传统的 synchronized 更强大和灵活的并发控制机制。 一、Lock 接口 Lock 接口是 Java 提供的一种比 synchronized 更灵活的锁机制。通过 Lock我们可以手动控制锁的获取和释放支持尝试获取锁、定时获取锁等操作。 步骤 创建一个实现 Lock 接口的锁对象如 ReentrantLock。在需要同步的代码块中调用 lock() 方法获取锁执行完后调用 unlock() 方法释放锁。 示例代码 import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;class Counter {private int count 0;private final Lock lock new ReentrantLock(); // 创建 ReentrantLock 对象public void increment() {lock.lock(); // 获取锁try {count;} finally {lock.unlock(); // 确保释放锁}}public int getCount() {return count;} }public class LockExample {public static void main(String[] args) {Counter counter new Counter();Thread t1 new Thread(() - {for (int i 0; i 1000; i) counter.increment();});Thread t2 new Thread(() - {for (int i 0; i 1000; i) counter.increment();});t1.start();t2.start();try {t1.join();t2.join();} catch (InterruptedException e) {e.printStackTrace();}System.out.println(最终计数 counter.getCount()); // 应该是2000} }二、ReadWriteLock 接口 ReadWriteLock 允许多个读线程同时访问但在写线程执行时所有读线程和其他写线程都不能访问。这样可以提高读操作的性能。 步骤 创建一个 ReadWriteLock 对象如 ReentrantReadWriteLock。使用 readLock() 和 writeLock() 方法获取读锁和写锁。 示例代码 import java.util.concurrent.locks.ReentrantReadWriteLock;class ReadWriteCounter {private int count 0;private final ReentrantReadWriteLock rwLock new ReentrantReadWriteLock();public void increment() {rwLock.writeLock().lock(); // 获取写锁try {count;} finally {rwLock.writeLock().unlock(); // 释放写锁}}public int getCount() {rwLock.readLock().lock(); // 获取读锁try {return count;} finally {rwLock.readLock().unlock(); // 释放读锁}} }public class ReadWriteLockExample {public static void main(String[] args) {ReadWriteCounter counter new ReadWriteCounter();Thread writer new Thread(() - {for (int i 0; i 1000; i) counter.increment();});Thread reader new Thread(() - {for (int i 0; i 1000; i) System.out.println(计数 counter.getCount());});writer.start();reader.start();try {writer.join();reader.join();} catch (InterruptedException e) {e.printStackTrace();}} }三、Semaphore Semaphore 是一个计数信号量允许一定数量的线程同时访问共享资源。可以用来控制对特定资源的访问量。 示例代码 import java.util.concurrent.Semaphore;class LimitedResource {private final Semaphore semaphore new Semaphore(2); // 允许2个线程同时访问public void accessResource() {try {semaphore.acquire(); // 获取信号量System.out.println(Thread.currentThread().getName() 正在访问资源。);Thread.sleep(1000); // 模拟资源访问} catch (InterruptedException e) {e.printStackTrace();} finally {semaphore.release(); // 释放信号量System.out.println(Thread.currentThread().getName() 已释放资源。);}} }public class SemaphoreExample {public static void main(String[] args) {LimitedResource resource new LimitedResource();for (int i 0; i 5; i) {new Thread(resource::accessResource).start();}} }四、CountDownLatch CountDownLatch 是一个同步辅助类允许一个或多个线程等待其他线程完成一组操作。它的计数器可以设置为一个整数调用 countDown() 方法可以将计数器减一当计数器为零时所有等待线程会被唤醒。 示例代码 import java.util.concurrent.CountDownLatch;public class CountDownLatchExample {public static void main(String[] args) throws InterruptedException {CountDownLatch latch new CountDownLatch(3); // 计数器设置为3Runnable task () - {try {Thread.sleep(1000); // 模拟任务System.out.println(Thread.currentThread().getName() 完成了.);} catch (InterruptedException e) {e.printStackTrace();} finally {latch.countDown(); // 减少计数器}};for (int i 0; i 3; i) {new Thread(task).start();}latch.await(); // 等待计数器为零System.out.println(所有任务完成。);} }五、CyclicBarrier CyclicBarrier 允许一组线程在某个点上相互等待直到所有线程都达到该点。它可以重复使用使得可以在多个循环中使用。 示例代码 import java.util.concurrent.CyclicBarrier;public class CyclicBarrierExample {public static void main(String[] args) throws InterruptedException {CyclicBarrier barrier new CyclicBarrier(3, () - System.out.println(所有线程到达了障碍。));Runnable task () - {try {System.out.println(Thread.currentThread().getName() 正在执行工作...);Thread.sleep((long) (Math.random() * 1000));barrier.await(); // 等待其他线程到达} catch (Exception e) {e.printStackTrace();}};for (int i 0; i 3; i) {new Thread(task).start();}} }总结 Java 提供的并发工具类如 Lock、Semaphore、CountDownLatch 和 CyclicBarrier 提供了比传统 synchronized 更灵活和强大的线程管理机制。了解它们的使用场景和特性有助于编写更高效和更安全的多线程程序。 下一步我们将学习 Java 中的线程池包括线程池的概念、使用方式以及常见的线程池实现类。 点我跳转下一课^_^
http://www.pierceye.com/news/680895/

相关文章:

  • 培训做网站传奇手游发布网站
  • 中国保密在线网站培训系统手机购物平台
  • 厦门网站制作建设沐风 wordpress 主题
  • 网站选择城市怎么做北京招聘信息
  • 一个做搞笑类视频的网站取名手机端企业网站源码
  • 房地产网站模板网站建设论文范文
  • 任丘网站制作公司pc网站制作公司
  • 惠州城乡规划建设局网站工程公司经营范围
  • 淮南服装网站建设地址巴彦淖尔网站建设公司
  • 如何让自己的网站被百度收录wordpress 悬浮网易云
  • 天津展示型网站建设外包腾讯云wordpress镜像
  • python做网站点登入没反映wordpress母公司
  • 中国建设培训网站查询系统地产项目网站建设ppt
  • 温州高端网站建设网站开发实验心得
  • 设计参考网站有哪些陕西省西安市事业单位招聘网
  • 月编程做网站wordpress需要调用缩略图
  • 做一份网站动态图多少钱网站托管服务公司
  • 宣传式网站营销型网站套餐
  • 建设网站如何优化关键词江门排名优化公司
  • 做教学的视频网站wordpress小工具推荐
  • 唯品会专门做特卖的网站保险行业网站模板
  • 电商类公司网站应该怎么搭建广州做网站公司哪家比较好
  • 企业网站实名认证时间怎样开通微信公众号
  • 怎么才能在百度上搜到自己的网站如何优化网站
  • 酒泉网站建设价格福清市建设局网站
  • 网站建设有几种厦门网站的建设
  • 沈阳网站外包通过法人姓名查企业
  • 建设网站的多少钱红色风格网站
  • 公司网站运营维护单位温州h5建站
  • 做网站想注册商标是哪一类网站上线具体流程