threadpool

c#多线程总结(纯干货)

我们两清 提交于 2020-08-19 00:49:01
线程基础 创建线程 static void Main( string [] args) { Thread t = new Thread(PrintNumbers); t.Start(); // 线程开始执行 PrintNumbers(); Console.ReadKey(); } static void PrintNumbers() { Console.WriteLine( " Starting... " ); for ( int i = 1 ; i < 10 ; i++ ) { Console.WriteLine(i); } } View Code 暂停线程 class Program { static void Main( string [] args) { Thread t = new Thread(PrintNumbersWithDelay); t.Start(); PrintNumbers(); Console.ReadKey(); } static void PrintNumbers() { Console.WriteLine( " Starting... " ); for ( int i = 1 ; i < 10 ; i++ ) { Console.WriteLine(i); } } static void PrintNumbersWithDelay() {

Spring线程池ThreadPoolTaskExecutor

a 夏天 提交于 2020-08-18 15:29:15
一、 ThreadPoolTaskExecutor 配置 <bean id ="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor" > <!-- 线程池维护线程的最少数量 --> <property name ="corePoolSize" value ="5" /> <!-- 线程池维护线程所允许的空闲时间 --> <property name ="keepAliveSeconds" value ="300" /> <!-- 线程池维护线程的最大数量 --> <property name ="maxPoolSize" value ="10" /> <!-- 线程池所使用的缓冲队列 --> <property name ="queueCapacity" value ="25" /> </bean> 属性字段说明: corePoolSize: 线程池维护线程的最少数量 keepAliveSeconds 线程池维护线程所允许的空闲时间 maxPoolSize 线程池维护线程的最大数量 queueCapacity 线程池所使用的缓冲队列 二、execute(Runnable)方法 执行过程 如果此时线程池中的数量小于corePoolSize

C# Stocket

一世执手 提交于 2020-08-18 12:21:43
介绍   1、TCP/IP(Transmission Control Protocol/Internet Protocol) 即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。   2、UDP(User Data Protocol,用户数据包协议)是与TCP相对应的协议。它属于TCP/IP协议族中的一种。   3、应用层(Application):应用层是一个很广泛的概念,有一些基本相同的系统级TCP/IP应用以及应用协议,也有许多的企业商业应用和互联网应用。   4、传输层(Transport):传输层包括UDP和TCP,UDP几乎不对报文进行检查,而TCP提供传输保证。   5、网络层(NetWork):网络层协议由一系列协议组成,包括ICMP、IGMP、RIP、OSPF、IP(v4、v6)等。   6、链路层(Link):又称为物理数据网络接口层,负责报文传输。 网络4层协议 原理图 端口的分类   1、公认端口(Well Known Ports):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯,明确了某种服务的协议。例如:80端口实际上总是HTTP通讯。   2、注册端口(Registered Ports):从1024到49151。它们松散地绑定于一些服务。也就是说许多服务绑定于这些端口

Java线程池(二)

给你一囗甜甜゛ 提交于 2020-08-18 02:02:19
Java 线程:新特征-有返回值的线程 Runnable和Callable的区别是, (1)Callable规定的方法是call(),Runnable规定的方法是run(). (2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值得 (3)call方法可以抛出异常,run方法不可以 (4)运行Callable任务可以拿到一个Future对象,表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。通过Future对象可以了解任务执行情况,可取消任务的执行,还可获取执行结果。 下面是个很简单的例子: import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; /** * Java线程:有返回值的线程 */ public class Test { public static void main(String[] args) throws ExecutionException,

软件测试技术进阶篇——花椒测试平台

我是研究僧i 提交于 2020-08-16 14:28:02
软件测试,爱码小哥邀你同行! 1. 背景 先来说说花椒测试平台的由来: # 目的1,降低接口测试对测试人员代码能力的要求。测试人员只需要知道接口的url,请求参数,以什么样的格式传个服务端,接口的响应数据里需要验证哪个字段的值即可进行测试,而不需要知道怎么建一个工程,怎么建一个测试类,测试方法,testng是怎么使用的,结果怎么解析,怎么取到想要的字段去做判断。 # 目的2,可视化的case管理,执行,结果管理。打开一个浏览器,根据接口文档新建一个测试case,执行检查接口返回,保存case,建不同入参的该接口的case,组成case集,批量运行,查看运行结果,相比于工程执行批量case,testng的html结果,平台的集中展示更清晰。 # 既然接口的测试已经有case的信息了,对接口进行压测的请求其实也类似一个case,只不过是有很多人在同时执行这个case,所以有了压力测试和接口测试平台的整合。在平台建压测任务的时候选定一个测试用例为载体,多并发的执行case,统计压测数据,实时展示。以往接口测试和压力测试都是分别写一个方法,里面有很多重复的部分。 # 接下来我们会想,像接口测试是由数据驱动的,那么UI自动化是否可以理解为一种另类的驱动呢?UI操作的公共方法如点击,输入,检查元素的值,其实和接口入参和结果检查很像,基于cucumber我们将UI自动化集成进了测试平台

任务调度框架Quartz原理简介

霸气de小男生 提交于 2020-08-15 13:18:59
目录 第一章 Quartz 1.1 Quartz概念 1.2 Quartz任务调度主要元素 1.3 Quartz特点 1.4 Quartz基本元素关系图 第二章 Trigger(触发器) 2.1 Trigger定义 2.2 Trigger属性 2.3 Trigger类型 2.3.1 SimpleTrigger 2.3.2 CalendarIntervalTrigger 2.3.3 DailyTimeIntervalTrigger 2.3.4 CronTrigge 第三章 Scheduler(任务调度器) 3.1Scheduler定义 3.2 Schedule种类 3.3 Schedule工厂 第四章 Job(任务) 4.1 Job定义 4.2 Job类型 4.3 Job属性 第五章 Quartz线程 5.1 Quartz线程分类 附录:参考资料 第一章 Quartz 1.1 Quartz概念 Quartz是OpenSymphony开源组织的一个Java开源项目, 在2009被Terracotta收购。 Quartz官网 1.2 Quartz任务调度主要元素 Quartz任务调度的主要元素有: Trigger(触发器) Scheduler(任务调度器) Job(任务) 其中Trigger,Job是元数据,Scheduler才是任务调度的控制器。 1.3 Quartz特点

一个static和面试官扯了一个小时,舌战加强版

我们两清 提交于 2020-08-15 03:18:02
一:背景 1. 讲故事 最近也是奇怪,在社区里看到好几篇文章聊static的玩法以及怎么拿这个和面试官扯半个小时,有点意思,点进去看都是java版的,这就没意思了,怎么也得有一篇和面试官扯C#中的 static用法撒,既然没有人开这个头,那我就献丑了。。。,下面以QA的方式记述,大家可以代入一下能回答几个问题。 二:QA环节 1. 第一个问题 面试官: 请问您都是在什么场景下用static的?   解析: 可能面试官潜意识的想问问你会不会使用本地缓存。 码农: 先不说我的场景,纵观C#的底层FCL源码,你会发现很多的 static修饰的集合,如ThreadPool: [SecurityCritical] private static bool QueueUserWorkItemHelper(WaitCallback callBack, object state, ref StackCrawlMark stackMark, bool compressStack) { QueueUserWorkItemCallback callback = new QueueUserWorkItemCallback(callBack, state, compressStack, ref stackMark); ThreadPoolGlobals.workQueue.Enqueue(callback,

使用异步线程入数据库(一)

拜拜、爱过 提交于 2020-08-13 09:08:46
package com.huawei.controller ; import com.huawei.pojo.Teacher ; import com.huawei.service.TeacherService ; import com.huawei.thread.TeacherThreadTask ; import org.springframework.beans.factory.annotation. Autowired ; import org.springframework.web.bind.annotation. RequestBody ; import org.springframework.web.bind.annotation. RequestMapping ; import org.springframework.web.bind.annotation. RestController ; import java.util.concurrent.ExecutorService ; import java.util.concurrent.Executors ; /** * @Author jose * date 2020 */ @RestController @RequestMapping ( "/testController" ) public class

一个static和面试官扯了一个小时,舌战加强版

妖精的绣舞 提交于 2020-08-13 08:31:50
一:背景 1. 讲故事 最近也是奇怪,在社区里看到好几篇文章聊static的玩法以及怎么拿这个和面试官扯半个小时,有点意思,点进去看都是java版的,这就没意思了,怎么也得有一篇和面试官扯C#中的 static用法撒,既然没有人开这个头,那我就献丑了。。。,下面以QA的方式记述,大家可以代入一下能回答几个问题。 二:QA环节 1. 第一个问题 面试官: 请问您都是在什么场景下用static的?   解析: 可能面试官潜意识的想问问你会不会使用本地缓存。 码农: 先不说我的场景,纵观C#的底层FCL源码,你会发现很多的 static修饰的集合,如ThreadPool: [SecurityCritical] private static bool QueueUserWorkItemHelper(WaitCallback callBack, object state, ref StackCrawlMark stackMark, bool compressStack) { QueueUserWorkItemCallback callback = new QueueUserWorkItemCallback(callBack, state, compressStack, ref stackMark); ThreadPoolGlobals.workQueue.Enqueue(callback,

【JUC】如何理解线程池?第四种使用线程的方式

半腔热情 提交于 2020-08-12 07:39:56
线程池的概念 线程池的主要工作的控制运行的线程的数量,处理过程种将任务放在队列,线程创建后再启动折现任务,如果线程数量超过了最大的数量,则超过部分的线程排队等待,直到其他线程执行完毕后,从队列种取出任务来执行。 处理流程: 1.线程池判断核心线程池的线程是否全部在执行任务?   1.1 不是:创建一个新的工作线程执行任务。   1.2 是:     2. 线程池判断工作队列是否已经满了?       2.1 没有满:将新提交的任务存储在工作队列中。       2.2 满了:         3. 线程池判断线程池的线程是否都在工作?           3.1 是:交由饱和策略来处理这个任务。           3.2 不是:创建一个新的工作线程来执行任务。        特点:线程复用、控制最大并发数、管理线程。 线程池的优势 1. 降低资源消耗,通过重复利用已经创建的线程,降低了线程创建和销毁产生的消耗。 2. 提高响应速度,任务到达时,任务不需要等待线程创建就能立即执行。 3. 提高线程的可管理性,线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行同一的分配、调优和监控。 线程池的使用 Java线程池是通过Executor框架实现的,该框架中用到了Executor、Executors