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

NET网站开发程序员招聘百度链接地址

NET网站开发程序员招聘,百度链接地址,国外的营销网站,最高法律网站是做啥的文章目录 一、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/154693.html

相关文章:

  • 一般纳税人网站建设多少税率免费创建网站
  • 在万网上域名了怎么做网站电商关键词工具
  • 免费网站建设市场泉州百度网站推广
  • 制作企业网站页面实训报告免费网站注册com
  • 西城顺德网站建设竞价托管如何托管
  • 搜索公司信息的软件如何优化seo
  • 做时间轴的在线网站十八大禁用黄app入口
  • 做网站应怎么缴税近三年成功的营销案例
  • 怎么免费从网站上做宣传抖音关键词排名软件
  • 做外贸是自建网站好还是b2b好合肥网站外包
  • 做kegg的网站网络推广方案模板
  • 网页浏览器打不开西宁网站seo
  • 中文版wordpress深圳关键词优化软件
  • 域名备案管理系统网站优化建议怎么写
  • 网站app怎么做seo是什么的
  • 网站访问index.html电商数据查询平台
  • 网站首页的布局南昌seo排名外包
  • 网速测速广州seo网络营销培训
  • 免费注册网站有哪些百度关键词推广公司哪家好
  • 建设营销型网站的步骤镇江关键字优化公司
  • wordpress链接重建青岛seo推广专员
  • 临桂区住房和城乡建设局门户网站河北网站seo外包
  • joomla网站模板短视频seo优化排名
  • 佛山技术支持 骏域网站建设百度seo关键词优化电话
  • 同一个网站可以同时做竞价和优化上海网络推广营销策划方案
  • 外包网站建设网站的营销策略
  • 网站开发的背景与环境云南今日头条新闻
  • 做网站租服务器吗博客推广的方法与技巧
  • 为公司设计一个网站chrome浏览器官网入口
  • 做网站宣传费用记什么科目手机如何创建网站