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

国土资源网站建设方案b2b是什么意思

国土资源网站建设方案,b2b是什么意思,销售网站设计方案,微网站建设教程1 线程和进程的区别?进程:进程指正在运行的程序。线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。同一个进程中的多个线程之间可以并发的执行。2 创建线程有哪几种方式&#xf…

1 线程和进程的区别?

进程:进程指正在运行的程序。

线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。同一个进程中的多个线程之间可以并发的执行。

2 创建线程有哪几种方式?

创建线程有三种方式:

继承 Thread 重写 run 方法;

实现 Runnable 接口;

实现 Callable 接口。

3 runnable和callable的区别

3.1相同点

都是接口

都可以编写多线程程序

都采用Thread.start()启动线程

3.2不同点

Runnable没有返回值;Callable可以返回执行结果,是个泛型,和Future、

FutureTask配合可以用来获取异步执行的结果

Callable接口的call()方法允许抛出异常;Runnable的run()方法异常只能在内部消化,不能往上继续抛

注:Callalbe接口支持返回执行结果,需要调用FutureTask.get()得到,此方法会阻塞主进程的继续往下执行,如果不调用不会阻塞。

4 线程同步的方式

线程同步的方式有两种:

  • 方式1:同步代码块

  • 方式2:同步方法

同步代码块: 在代码块声明上 加上synchronized

synchronized (锁对象) {

可能会产生线程安全问题的代码

}

同步方法:在方法声明上加上synchronized

5 线程池

线程池,主要是管理线程,具有如下的优势:

(1)降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。

(2)提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。

(3)提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。

5.1 线程池的七大参数

public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler) {//...
}

这 7 个参数分别是:

corePoolSize核心线程数。是指线程池中长期存活的线程数

maximumPoolSize最大线程数。线程池允许创建的最大线程数量,当线程池的任务队列满了之后,可以创建的最大线程数。

keepAliveTime空闲线程存活时间。空闲线程存活时间,当线程池中没有任务时,会销毁一些线程,销毁的线程数=maximumPoolSize(最大线程数)-corePoolSize(核心线程数)。

TimeUnit时间单位。空闲线程存活时间的描述单位,

BlockingQueue线程池任务队列。线程池存放任务的队列,用来存储线程池的所有待执行任务。

ThreadFactory创建线程的工厂。线程池创建线程时调用的工厂方法,通过此方法可以设置线程的优先级、线程命名规则以及线程类型(用户线程还是守护线程)等。

RejectedExecutionHandler拒绝策略。当线程池的任务超出线程池队列可以存储的最大值之后,执行的策略。

默认的拒绝策略有以下 4 种:

  • AbortPolicy:拒绝并抛出异常。

  • CallerRunsPolicy:使用当前调用的线程来执行此任务。

  • DiscardOldestPolicy:抛弃队列头部(最旧)的一个任务,并执行当前任务。

  • DiscardPolicy:忽略并抛弃当前任务。

线程池的默认策略是 AbortPolicy 拒绝并抛出异常。

6 案例

一 创建线程池

package com.yty.system.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;@Configuration
public class ExecutorConfig {@Bean("taskExecutor")public Executor taskExecutor() {ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();//设置线程池参数信息// 核心线程数taskExecutor.setCorePoolSize(3);// 最大线程数taskExecutor.setMaxPoolSize(4);// 线程队列数量taskExecutor.setQueueCapacity(2);// 空闲线程存活时间(秒)taskExecutor.setKeepAliveSeconds(60);// 线程名称前缀taskExecutor.setThreadNamePrefix("myExecutor--");// 线程执行完关闭taskExecutor.setWaitForTasksToCompleteOnShutdown(true);taskExecutor.setAwaitTerminationSeconds(60);// 修改拒绝策略为使用当前线程执行taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());//初始化线程池taskExecutor.initialize();return taskExecutor;}}

二 使用

import com.yty.system.entity.AccountInfo;
import com.yty.system.entity.vo.R;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.task.TaskExecutor;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.web.bind.annotation.*;import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;/*** <p>*  前端控制器* </p>** @author yty* @since 2022-06-12*/
@RestController
@RequestMapping("/user")
@Api(tags = "用户管理API")
public class UserController {@Resourceprivate TaskExecutor taskExecutor;@GetMapping("listAsync")public R listAsync(int a) {long start = System.currentTimeMillis();CompletableFuture[] cf = new CompletableFuture[a];for (int i = 0; i < a; i++) {int finalI = i;cf[i] = CompletableFuture.runAsync(() -> {getA(finalI);}, taskExecutor);}// 是否执行完毕CompletableFuture.allOf(cf).join();long end = System.currentTimeMillis();String s = "总共耗时" + (end - start) + "毫秒";System.out.println(s);return R.ok(s);}private void getA(int i) {try {System.out.println("---------" + i);Thread.sleep(1000L);} catch (Exception e) {e.printStackTrace();}}}
http://www.khdw.cn/news/24700.html

相关文章:

  • 宠物商品销售网站开发背景友情链接交换要注意哪些问题
  • wordpress是全开源吗网站排名优化专业定制
  • 做外贸网站功能网络营销优化
  • 免费编程网课网站排名优化手机
  • 手机app网站建设深圳网站建设服务
  • 网站上线 备案网站运营推广选择乐云seo
  • 深圳和海枫建设集团有限公司网站深圳营销推广公司
  • 做电商网站就业岗位晋升营销网络推广
  • 东莞市官网网站建设哪家好抖音关键词排名查询
  • 国外做调查问卷的网站首页优化公司
  • 信用门户网站建设专家评价优化落实疫情防控新十条
  • 做城市门户网站怎么发展学开网店哪个培训机构好正规
  • 帝国cms做电影网站网络营销手段有哪些方式
  • 网站页面优化简单吗软文怎么写吸引人
  • 网站建设工作室北京seo优化排名推广
  • 网站开发设计培训长岭网站优化公司
  • 做网站的大公司有哪些服装品牌策划方案
  • 提供网站建设小程序制作刘连康seo培训哪家强
  • 怎么开网店不需要自己上货谷歌seo视频教程
  • 天津南昌网站建设百度指数下载手机版
  • 权威的赣州网站建设东莞seo排名扣费
  • 怎么做坑人的网站深圳网站开发
  • jsp网站开发工资推广产品
  • wordpress淘宝客类网站建设百度游戏排行榜风云榜
  • 彩票自己开盘做网站百度新闻网站
  • WordPress站点地址填错赚钱平台
  • 微信公众号优惠和网站绑定怎么做游戏推广怎么做
  • 网站建设及托管合同建立网站的主要步骤
  • 佛山企业自助建站系统网站开发流程是什么
  • 企业为什么要做手机网站宁波seo排名公司