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

NET网站开发程序员招聘潍坊做网站公司

NET网站开发程序员招聘,潍坊做网站公司,宝鸡seo优化教程,网站不兼容360浏览器文章目录 一、Synchronized 锁二、ReentrantLock 锁三、两阶段终止阶段一:通知终止阶段二:响应中断 四、线程池为什么要使用线程池?如何创建线程池?ExecutorsThreadPoolExecutor 线程池的基本参数 五、线程池处理任务的流程 一、S…

文章目录

  • 一、Synchronized 锁
  • 二、ReentrantLock 锁
  • 三、两阶段终止
    • 阶段一:通知终止
    • 阶段二:响应中断
  • 四、线程池
    • 为什么要使用线程池?
    • 如何创建线程池?
      • Executors
      • ThreadPoolExecutor
    • 线程池的基本参数
  • 五、线程池处理任务的流程


一、Synchronized 锁

synchronized 是 Java关键字,用于修饰方法或代码块,属于重量级锁,主要是在多线程环境下实现对共享资源的互斥访问。
基本使用

public class SynchronizedExample {public synchronized void method1() {// 修饰实例方法,锁的是当前对象实例}public static synchronized void method2() {// 修饰静态方法,锁的是当前类的 Class 对象}public void method3() {synchronized (this) {// 代码块锁,锁的是当前对象}}
}

synchronized 可以保证数据的可见性和原子性,支持可重入和自动释放锁,但是不支持超时锁和中断等操作。


二、ReentrantLock 锁

ReentrantLock 是 JDK 1.5 引入的可重入锁,属于轻量级锁,相比 synchronized 增加了超时、中断、公平锁等高级功能。
基本使用

public class ReentrantLockExample {private final ReentrantLock lock = new ReentrantLock();public void method() {lock.lock();try {// 临界区} finally {lock.unlock(); }}
}

ReentrantLock 支持可重入、可中断、超时机制和条件变量,但是加锁需要手动释放,否则可能造成死锁。


三、两阶段终止

两阶段终止模式: 是指优雅地中止线程的方式。

阶段一:通知终止

线程通过 interrupt() 设置中断标志,告知目标线程终止。

阶段二:响应中断

线程检测到中断标志(或抛出中断异常),执行清理工作后安全退出。

class Main extends Thread {public void run() {while (!Thread.currentThread().isInterrupted()) {try {Thread.sleep(1000);} catch (InterruptedException e) {break; // 退出循环}}}}

四、线程池

为什么要使用线程池?

  • 提高响应速度
  • 减少资源消耗
  • 易于管理线程

如何创建线程池?

Executors

  1. 无限线程数的线程池
ExecutorService threadPool = Executors.newCachedThreadPool();
  1. 固定线程的线程池
ExecutorService threadPool = Executors.newFixedThreadPool(10);
  1. 单一线程的线程池
ExecutorService threadPool = Executors.newSingleThreadExecutor();

ThreadPoolExecutor

ExecutorService pool = new ThreadPoolExecutor(2,5,10,TimeUnit.SECONDS,new ArrayBlockingQueue<>(10),Executors.defaultThreadFactory(),new ThreadPoolExecutor.AbortPolicy()
);
pool.execute(() -> {System.out.println(Thread.currentThread().getName() + " 执行任务:");});
pool.shutdown(); 

线程池的基本参数

ThreadPoolExecutor(int corePoolSize,      // 核心线程数int maximumPoolSize,   // 最大线程数long keepAliveTime,    // 空闲线程存活时间TimeUnit unit,         // 时间单位BlockingQueue<Runnable> workQueue, // 任务队列ThreadFactory threadFactory,       // 线程工厂RejectedExecutionHandler handler   // 拒绝策略
)

五、线程池处理任务的流程

在这里插入图片描述

  1. 如果当前线程数 < 核心线程数,则创建一个线程执行任务。
  2. 如果核心线程数 <= 当前线程数 < 最大线程数并且阻塞队列未满,则线程进入阻塞队列等待。
  3. 如果阻塞队列已满但是当前线程数 < 最大线程数,则创建一个线程执行任务。
  4. 如果当前线程数等于最大线程数,则根据拒绝策略处理该线程。
http://www.dtcms.com/wzjs/326626.html

相关文章:

  • wordpress添加搜索小工具seo搜索引擎推广什么意思
  • seo搜索引擎优化网站如何快速推广自己的品牌
  • 网站手机定位授权怎么做设计个人网站
  • 珠海手机微信网站建设小程序开发百度信息
  • 做网站广告词找王思奇百度手机助手下载2021新版
  • 网站服务器防护宁波网站推广方式
  • 寺庙网站开发建设方案最大的中文搜索引擎
  • 网站建设和技术支持无限制搜索引擎排名
  • 对于网站运营应该如何做整合营销传播方案
  • 公司营销型网站公司厦门网络关键词排名
  • 深圳市住房和建设局网站登录新闻最近的大事10件
  • 网站建设 化工seo网站推广经理
  • 重庆电商网站建设怎样把广告放到百度
  • 网站外链建设书籍做运营需要具备什么能力
  • 昆明的房产网站建设厦门谷歌seo公司有哪些
  • wordpress 更智能的摘要百度seo公司哪家好一点
  • server2008做DNS与网站常用的网络营销工具有哪些
  • b2b网站一个人可以做吗域名seo站长工具
  • 电子商务网站开发人员要求市场推广计划书
  • 山西省煤矿建设协会网站网站安全检测平台
  • 企业微信网站开发文档搜索引擎营销的英文简称
  • 建设一个私人视频网站今日国际新闻最新消息
  • 郑州哪些公司做网站建设seo培训机构
  • 建设网站需要的软件2023上海又出现疫情了
  • 怎样查看网站开发后台语言网络广告的特点
  • 山东省建设执业官方网站seo搜索引擎优化招聘
  • 深圳做公司网站推广的河南怎样做网站推广
  • 南阳东莞网站建设公司哪家好百度站长之家工具
  • 酒店行业的网站建设品牌软文案例
  • 新建网站需要多少钱网站推广的基本手段有哪些