executor

Executor(一)ExecutorService 线程池

别等时光非礼了梦想. 提交于 2020-01-15 00:21:16
Executor(一)ExecutorService 线程池 本篇主要涉及到的是 java.util.concurrent 包中的 ExecutorService。ExecutorService 就是 Java 中对线程池的实现。 一、ExecutorService 介绍 Java API 对 ExecutorService 接口的实现有两个,它们是 Java 线程池具体实现类 ): ThreadPoolExecutor ScheduledThreadPoolExecutor 二、ExecutorService 创建 创建一个什么样的 ExecutorService 的实例(即线程池)需要根据具体应用场景而定,不过 Java 给我们提供了一个 Executors 工厂类,它可以帮助我们很方便的创建各种类型 ExecutorService 线程池,Executors 一共可以创建下面这四类线程池: newCachedThreadPool 创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。 newSingleThreadExecutor

实际应用场景策略模式使用总结

非 Y 不嫁゛ 提交于 2020-01-14 18:30:01
背景:在给第三方推送表单数据时候,需要分多种方式进行传送,比如区分传送协议,传送参数,传送token等等,此时为了避免代码的重复和冗余,以及后期的扩展性和维护性,合理的利用策略模式可以很好的解决这个问题 协议包括:HTTP,HESSIAN,WEBSERVICE 参数:部分地址需要token进行验证身份,部分需要header参数,部分需要定制化的参数 传输方式:json对象,object对象 逻辑具体如下图 策略类部分代码: public class StrategerExecutor { private ActionExecutor actionExecutor; public StrategerExecutor(ActionExecutor actionExecutor) { this.actionExecutor = actionExecutor; } public Object executor ()throws Exception{ return actionExecutor.execute(); } } interface接口部分代码: public interface ActionExecutor { /** * 业务执行方法 * @return */ public Object execute() throws Exception; } 客户端部分代码:

Java并发学习 & Executor学习 & 异常逃逸 & 同步互斥Best Practice & wait/notify, conditon#await/signal

陌路散爱 提交于 2020-01-14 12:11:55
看了这篇文章: http://www.ciaoshen.com/2016/10/28/tij4-21/ 有一些Java并发的内容,另外查了一些资料。 朴素的Thread 首先,Java中关于线程Thread最基本的事实是: 除非通过Native方法将本地线程加入JVM,创建线程唯一的方法就是“创建一个Thread类的实例对象,然后调用它的start()方法。” 其次,关于Thread对象实例的构造,需要注意,start()方法依赖于run()方法: 要么传递一个Runnable对象给构造器做参数。 要么重写Thread自己的run()方法。 第一种方法是实现Runnable接口。 注意, Runnable里面获取线程信息需要用 Thread.currentThread() package com.company; class MyRunnable implements Runnable { public void run() { try { Thread.sleep((long)(Math.random() % 5 * 1000 + 1000)); } catch (InterruptedException e) { e.printStackTrace(); } System.out.printf("Here is thread %d\n", Thread

Windows下Nginx的启动、停止等命令

你离开我真会死。 提交于 2020-01-13 01:12:36
配XXL-JOB分布式任务调度平台安装与部署 一、简介 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 下载 文档地址 中文文档 English Documentation 源码仓库地址: https://github.com/xuxueli/xxl-job https://github.com/xuxueli/xxl-job 中央仓库地址 <!-- http://repo1.maven.org/maven2/com/xuxueli/xxl-job-core/ --> <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>${最新稳定版本}</version> </dependency> 准备环境 Maven3+ Jdk1.7+ Mysql5.6+ 二、快速入门 2.1 初始化“调度数据库” 请下载项目源码并解压,获取 "调度数据库初始化SQL脚本" 并执行即可,正常情况下应该生成16张表。 "调度数据库初始化SQL脚本" 位置为: /xxl-job/doc/db/tables_xxl_job.sql 调度中心支持集群部署

Streaming的介绍

独自空忆成欢 提交于 2020-01-11 06:43:10
Streaming 1.Streaming简介 1.1.Streaming基于开源Storm,是一个分布式、实时计算框架。 1.2.Streaming具有以下几种特点: 1.3.实时响应,低延迟。 1.4.数据不存储,先计算。 1.5.连续查询。 1.6.事件驱动。 2.Streaming应用场景 2.1.主要应用于以下几种场景: 2.2.实时分析:如实时日志处理、交通流量分析等。 2.3.实时统计:如网站的实时访问统计、排序等。 2.4.实时推荐:如实时广告定位、事件营销等。 3.Streaming在FusionInsight中的位置 3.1.Steaming是一个实时的分布式的实时计算框架,在实时业务中有广泛的应用。 5.适用场景比较 5.1.Streaming适用于对响应时间有严格要求的场景,通常为毫秒级。 5.2.Spark Streaming适用于对响应时间要求不高的场景,通常为秒级。 5.3.要求毫秒级建议使用streaming,秒级建议sparkstreaming。 6.基本概念 (1) 6.1.Topology:Streaming中运行的一个实时应用程序。 6.2.Nimbus:负责资源分配和任务调度。 6.3.Supervisor:负责接受Nimbus分配的任务,启动和停止属于自己管理的worker进程。 6.4.Worker:Topology运行时的物理进程

spark-调节executor堆外内存

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-10 11:58:54
什么时候需要调节Executor的堆外内存大小? 当出现一下异常时: shuffle file cannot find,executor lost、task lost,out of memory 出现这种问题的现象大致有这么两种情况: Executor挂掉了,对应的Executor上面的block manager也挂掉了,找不到对应的shuffle map output文件,Reducer端不能够拉取数据 Executor并没有挂掉,而是在拉取数据的过程出现了问题。 上述情况下,就可以去考虑调节一下executor的堆外内存。也许就可以避免报错;此外,有时,堆外内存调节的比较大的时候,对于性能来说,也会带来一定的提升。这个executor跑着跑着,突然内存不足了,堆外内存不足了,可能会OOM,挂掉。block manager也没有了,数据也丢失掉了。 如果此时,stage0的executor挂了,BlockManager也没有了;此时,stage1的executor的task,虽然通过 Driver的MapOutputTrakcer获取到了自己数据的地址;但是实际上去找对方的BlockManager获取数据的 时候,是获取不到的。 此时,就会在spark-submit运行作业(jar),client(standalone client、yarn client)

剖析netty启动过程

依然范特西╮ 提交于 2020-01-10 05:23:32
1、总体看一下源代码 启动类源码 // Configure the server. EventLoopGroup bossGroup = new NioEventLoopGroup(1); EventLoopGroup workerGroup = new NioEventLoopGroup(); try { ServerBootstrap b = new ServerBootstrap(); b.group(bossGroup, workerGroup) .channel(NioServerSocketChannel.class) .option(ChannelOption.SO_BACKLOG, 100) .handler(new LoggingHandler(LogLevel.INFO)) .childHandler(new ChannelInitializer<SocketChannel>() { @Override public void initChannel(SocketChannel ch) throws Exception { ChannelPipeline p = ch.pipeline(); if (sslCtx != null) { p.addLast(sslCtx.newHandler(ch.alloc())); } //p.addLast(new

Spark核心原理(核心篇 二)

徘徊边缘 提交于 2020-01-08 15:11:17
目录 运行结构图 & 常用术语 消息通信原理 运行流程图 调度算法 容错及HA 监控 一、运行结构图 & 常用术语 Application: Appliction都是指用户编写的Spark应用程序,其中包括一个Driver功能的代码和分布在集群中多个节点上运行的Executor代码 SparkContext: Spark应用程序的入口,负责调度各个运算资源,协调各个Worker Node上的Executor Driver: Spark中的Driver即运行上述Application的main函数并创建SparkContext,创建SparkContext的目的是为了准备Spark应用程序的运行环境,在Spark中有SparkContext负责与ClusterManager通信, 进行资源申请、任务的分配和监控 等,在执行阶段,Driver会将Task和Task所依赖的file和jar序列化后传递给对应的Worker机器。当Executor部分运行完毕后,Driver同时负责将SparkContext关闭,通常用SparkContext代表Driver Cluter Manager: 指的是在集群上获取资源的外部服务。目前有三种类型 Standalone : spark原生的资源管理,由Master负责资源的分配 Apache Mesos:与hadoop

ThreadPoolExecutor线程池中类的关系

感情迁移 提交于 2020-01-08 09:27:05
顶级接口Executor只有一个方法execute 这里要区分Executor和Executors(Executor是线程的最底层接口,Executors是公共工厂方法) ExecutorService扩展了Executor的功能 AbstractExecutorService实现了ExecutorService功能 引入这次主题线程池的类:ThreadPoolExecutor,该类在AbstractExecutorService基础上有丰富了很多对线程的处理 来源: CSDN 作者: zuodaoyong 链接: https://blog.csdn.net/zuodaoyong/article/details/103883219

Spring中@Configuration@EnableAsync@Async用法总结 二

一世执手 提交于 2020-01-07 08:31:53
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 版权声明:本文为原创文章,转载请注明转自Clement-Xu的csdn博客。 这个注解用于标注某个方法或某个类里面的所有方法都是需要异步处理的。被注解的方法被调用的时候,会在新线程中执行,而调用它的方法会在原来的线程中执行。这样可以避免阻塞、以及保证任务的实时性。适用于处理log、发送邮件、短信……等。 注解的应用范围: 类:表示这个类中的所有方法都是异步的 方法:表示这个方法是异步的,如果类也注解了,则以这个方法的注解为准 相关的配置: <task:annotation-driven />配置: executor :指定一个缺省的executor给@Async使用。 例子: <task:annotation-driven executor="asyncExecutor" /> <task:executor />配置参数: id :当配置多个executor时,被@Async(" id ")指定使用;也被作为线程名的前缀。 pool-size : core size :最小的线程数,缺省:1 max size :最大的线程数,缺省:Integer.MAX_VALUE queue-capacity :当最小的线程数已经被占用满后,新的任务会被放进queue里面,当这个queue的capacity也被占满之后