executor

Java8并发教程:Threads和Executors

删除回忆录丶 提交于 2019-12-04 14:27:57
原文地址 原文作者: Benjamin Winterberg 译者:张坤 欢迎阅读我的Java8并发教程的第一部分。这份指南将会以简单易懂的代码示例来教给你如何在Java8中进行并发编程。这是一系列教程中的第一部分。在接下来的15分钟,你将会学会如何通过线程,任务(tasks)和 exector services来并行执行代码。 第一部分:Threads和Executors 第二部分:同步和锁 并发在Java5中首次被引入并在后续的版本中不断得到增强。在这篇文章中介绍的大部分概念同样适用于以前的Java版本。不过我的代码示例聚焦于Java8,大量使用lambda表达式和其他新特性。如果你对lambda表达式不属性,我推荐你首先阅读我的 Java 8 教程 。 Threads 和 Runnables 所有的现代操作系统都通过进程和线程来支持并发。进程是通常彼此独立运行的程序的实例,比如,如果你启动了一个Java程序,操作系统产生一个新的进程,与其他程序一起并行执行。在这些进程的内部,我们使用线程并发执行代码,因此,我们可以最大限度的利用CPU可用的核心(core)。 Java从JDK1.0开始执行线程。在开始一个新的线程之前,你必须指定由这个线程执行的代码,通常称为task。这可以通过实现 Runnable ——一个定义了一个无返回值无参数的 run() 方法的函数接口

Spark入门01

拜拜、爱过 提交于 2019-12-04 11:57:29
一, Spark概述 spark框架地址 1、官网: http://spark.apache.org/ 2、源码托管: https://github.com/apache/spark 3、母公司网站: https://databricks.com/ 官方博客:https://databricks.com/blog/、https://databricks.com/blog/category/engineering/spark 1,官方定义 http://spark.apache.org/docs/2.2.0/ Spark框架,类似于MapReduce框架,针对大规模数据分析框架。 2,大数据分析类型 离线处理:处理分析的数据是静态不变的,类似MapReduce和Hive框架等 交互式分析:即席查询,类似于impala 实时分析:针对流式数据实时处理,展示结果等 3,Spark框架介绍 在磁盘上对100TB的数据进行排序,可以看到Spark比hadoop快的多,效率高。 为什么Spark框架如此快? 数据结构 RDD:弹性分布式数据集,Spark将要处理的数据封装到集合RDD中,调用RDD中函数处理数据。 RDD数据可以放到内存中,内存不足可以放到磁盘中。 Task任务运行方式不一样 MapReduce应用运行:MapTask和ReduceTask都是JVM进程。启动一个jvm进程很慢

Spark入门01

一曲冷凌霜 提交于 2019-12-04 11:53:05
一, Spark概述 spark框架地址 1、官网: http://spark.apache.org/ 2、源码托管: https://github.com/apache/spark 3、母公司网站: https://databricks.com/ 官方博客:https://databricks.com/blog/、https://databricks.com/blog/category/engineering/spark 1,官方定义 http://spark.apache.org/docs/2.2.0/ Spark框架,类似于MapReduce框架,针对大规模数据分析框架。 2,大数据分析类型 离线处理:处理分析的数据是静态不变的,类似MapReduce和Hive框架等 交互式分析:即席查询,类似于impala 实时分析:针对流式数据实时处理,展示结果等 3,Spark框架介绍 在磁盘上对100TB的数据进行排序,可以看到Spark比hadoop快的多,效率高。 为什么Spark框架如此快? 数据结构 RDD:弹性分布式数据集,Spark将要处理的数据封装到集合RDD中,调用RDD中函数处理数据。 RDD数据可以放到内存中,内存不足可以放到磁盘中。 Task任务运行方式不一样 MapReduce应用运行:MapTask和ReduceTask都是JVM进程。启动一个jvm进程很慢

Asynctask解析以及注意事项

柔情痞子 提交于 2019-12-04 08:37:13
说到AsyncTask这个类,好多人其实不太了解。最近看了下代码,把心得分享给大家。 AsyncTask的execute的执行流程为 先调用ThreadPoolExecutor.execute(mFuture); 然后ThreadPoolExecutor.execute(mFuture) 会调用ThreadPoolExecutor.addWorker(mFuture); 最后ThreadPoolExecutor.addWorker(mFuture)会调用mFuture的run()方法,run方法中就是该线程要执行操作的地方 到此我们来关注一下mFuture,AsyncTask中的mFuture是一个FutureTask,FutureTask实现了Future<V>, Runnable两个接口, Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果,计算完成后只能使用 get 方法来获取结果。 mFuture以mWorker作为参数 现看mFuture的构造方法: public void run() { sync.innerRun(); } sync是什么呢?Sync类是一个内部类,我们看看它的初始化 public FutureTask(Callable<V> callable) { if (callable == null)

Spark Core知识点复习-2

好久不见. 提交于 2019-12-04 06:58:31
day1112 1.spark core复习 任务提交 缓存 checkPoint 自定义排序 自定义分区器 自定义累加器 广播变量 Spark Shuffle过程 SparkSQL 一. Spark Core回顾 1 集群启动 Spark集群启动流程: 1、调用start-alsh脚本,开始启动Master 2、Master启动以后, preStart方法调用了一个定时器,定时的检查超时的Worker. 3、启动脚本会解析slaves配置文件,找到启动Worker的相应节点,开始启动Worker 4、Worker服务启动后开始调用preStart方法开始向所有的Master进行注册 5、Master接收到Worker发送过来注册信息, Master开始保存注册信息并把自己的url响应给Worker 6、Worker接收到Master的url后并更新 ,开始调用一个定时器 ,定时的向Master发送心跳信息 7、Master不断的收到心跳信息(WorkerId),Master根据WorkerId去找是否有之前存过的WorkerId对应的WorkerInfo,如果有则更新最后一次心跳信息 2 任务提交 Spark任务提交流程: 1、Driver端会通过spark-sumbit脚本启动SparkSubmit进程,此时创建了一个非常重要的对象 (SparkContext)

Calling Looper more than once causes “sending message to a Handler on a dead thread”

送分小仙女□ 提交于 2019-12-04 05:29:15
问题 I am using an Executor [fixed thread pool] with my own ThreadFactory that adds a Looper: Handler HANDLER = new Handler(); Executor THREADS = Executors.newFixedThreadPool(THREAD_POOL_SIZE, new ThreadFactory() { @Override public Thread newThread(Runnable runnable) { return new MyThread(new Runnable() { @Override public void run() { Looper.prepare(); runnable.run(); } }); } }); private static class MyHandler extends Handler { public boolean fail; public void handleMessage(Message msg) { switch

Does this need explicit synchronization?

放肆的年华 提交于 2019-12-04 04:02:13
问题 I have two threads, and I want to make sure I am doing the synchronization correctly on the LinkedBlockingQueue.. Is this correct? Or is the explicit synchronization on (messageToCommsQueue) not necessary? Declaration: private LinkedBlockingQueue<BaseMessage> messagesToCommsQueue; Method one: private void startOperationModeStatusMessageExecutor() { ScheduledExecutorService operationModeStatusExecutor = Executors.newSingleThreadScheduledExecutor(); operationModeStatusExecutor

await for any future asyncio

折月煮酒 提交于 2019-12-04 03:59:01
I'm trying to use asyncio to handle concurrent network I/O. A very large number of functions are to be scheduled at a single point which vary greatly in time it takes for each to complete. Received data is then processed in a separate process for each output. The order in which the data is processed is not relevant, so given the potentially very long waiting period for output I'd like to await for whatever future finishes first instead of a predefined order. def fetch(x): sleep() async def main(): futures = [loop.run_in_executor(None, fetch, x) for x in range(50)] for f in futures: await f

Pause ScheduledExecutorService

假如想象 提交于 2019-12-04 03:02:01
I am using a ScheduledExecutorService to execute a task that calls a service at a fixed rate. The service may return some data to the task. The task stores data in a queue. Some other threads slowly pick items from the queue import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class EverlastingThread implements Runnable { private ScheduledExecutorService executorService; private int time; private TimeUnit timeUnit; private BlockingQueue<String> queue = new

spark学习笔记(一)

独自空忆成欢 提交于 2019-12-04 01:23:01
概括 我们公司使用spark已经有段时间了,现在我对我之前的学习知识进行整理,以便记录和大家共同学习,有一部分是网上摘抄,感谢网络共享大神。本文只是针对spark2,spark基本概念,简而言之就是:spark专门为大规模数据处理而设计的快速通用的计算引擎,是apache的一个开源项目。是一种跟Hadoop相似的通用分布式并行计算框架,但是spark是基于内存计算的分布式执行框架,在执行速度上优于hadoop,并且提供了一个全面、统一的框架用于管理各种有着不同性质的数据集和数据源的大数据处理需求。 SPARK架构和生态 spark主要包括Spark Core和在Spark Core基础上建立的应用框架:数据分析引擎SparkSQL、图计算框架GraphX、机器学习库MLlib、流计算引擎Spark Streaming。Core库主要包括上下文(Spark Context)、数据抽象集(RDD、DataFrame和DataSet)、调度器(Scheduler)、洗牌(shuffle)和序列化器(Serializer)等。 在Core库之上就根据业务需求分为用于交互式查询的SQL、实时流处理Streaming、机器学习Mllib和图计算GraphX四大框架,除此外还有一些其他实验性项目如Tachyon、BlinkDB和Tungsten等。Hdfs是Spark主要应用的持久化存储系统