Thread常见方法
Thread常见方法
方法名
static
功能说明
注意
start()
启动一个新线程,在新的线程运行 run 方法中的代码
start 方法只是让线程进入就绪,里面代码不一定立刻运行(CPU 的时间片还没分给它)。每个线程对象的start方法只能调用一次,如果调用了多次会出现 IllegalThreadStateException
run()
新线程启动后会调用的方法
如果在构造 Thread 对象时传递了 Runnable 参数,则线程启动后会调用 Runnable 中的 run 方法,否则默认不执行任何操作。但可以创建 Thread 的子类对象,来覆盖默认行为
...
Java线程
创建和运行线程
方法一,使用Thread
12345678// 创建线程对象Thread t = new Thread() { public void run() { // 要执行的任务 }};// 启动线程t.start();
例如:
123456789// 构造方法的参数是给线程指定名字,推荐Thread t1 = new Thread("t1") { @Override // run 方法内实现了要执行的任务 public void run() { l ...
并发编程概念
进程与线程
进程
程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的
当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。
进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器等),也有的程序只能启动一个实例进程(例如网易云音乐、360 安全卫士等)
线程
一个进程之内可以分为一到多个线程。
一个线程就是一个指令流,将指令流中的一条条指令以一定的顺序交给 CPU 执行。
Ja ...
线程基本应用
应用
应用之异步调用(案例1)
以调用方角度来讲,如果
需要等待结果返回,才能继续运行就是同步
不需要等待结果返回,就能继续运行就是异步
12345678910111213141516171819202122232425262728package cn.itcast.n2.util;import lombok.extern.slf4j.Slf4j;import java.io.File;import java.io.FileInputStream;import java.io.IOException;@Slf4j(topic = "c.FileReader" ...
Spark-GraphX计算
引入依赖:
12345<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-graphx_2.12</artifactId> <version>${spark.version}</version></dependency>
图的基本操作
1234567891011121314151617181920212223242526272829303132333435363738394041424 ...
Spark-GraphX基础
GraphX 与 Spark 其他组件相比相对独立,拥有自己的核心数据结构与算子。
GraphX架构
GraphX的整体架构可以分为三个部分:
算法层。基于 Pregel 接口实现了常用的图算法。包括 PageRank、SVDPlusPlus、TriangleCount、 ConnectedComponents、 StronglyConnectedConponents 等算法
接口层。在底层 RDD 的基础之上实现了 Pregel 模型 BSP 模式的计算接口
底层。图计算的核心类,包含:VertexRDD、EdgeRDD、RDD[EdgeTriplet]
Gra ...
Spark-GraphX概述
GraphX 是 Spark 一个组件,专门用来表示图以及进行图的并行计算。GraphX 通过重新定义了图的抽象概念来拓展了 RDD: 定向多图,其属性附加到每个顶点和边。为了支持图计算, GraphX 公开了一系列基本运算符(比如:mapVertices、mapEdges、subgraph)以及优化后的 Pregel API 变种。此外,还包含越来越多的图算法和构建器,以简化图形分析任务。
GraphX在图顶点信息和边信息存储上做了优化,使得图计算框架性能相对于原生RDD实现得以较大提升,接近或到达 GraphLab 等专业图计算平台的性能。GraphX最大的贡献是,在Spark之上提供一栈 ...
Spark-Streaming之与Kafka整合
官网:http://spark.apache.org/docs/2.4.5/streaming-kafka-integration.html
针对不同的spark、kafka版本,集成处理数据的方式分为两种:Receiver Approach和Direct Approach,不同集成版本处理方式的支持,可参考下图:
Kafka-08 接口
Receiver based Approach
基于 Receiver 的方式使用 Kafka 旧版消费者高阶API实现。
对于所有的 Receiver,通过 Kafka 接收的数据被存储于 Spark 的 Executors上,底层是写入Block ...
Spark-Streaming之DStream转换与输出
DStream转换操作
DStream上的操作与RDD的类似,分为 Transformations(转换)和 Output Operations(输出)两种,此外转换操作中还有一些比较特殊的方法,如:updateStateByKey、transform 以及各种 Window 相关的操作。
Transformation
Meaning
map(func)
将源DStream中的每个元素通过一个函数func从而得到新的DStreams
flatMap(func)
和map类似,但是每个输入的项可以被映射为0或更多项
filter(func)
选择源DStream中函数fun ...
Spark-Streaming之DStream基础数据源
基础数据源包括:文件数据流、socket数据流、RDD队列流;这些数据源主要用于测试。
创建maven项目,pom文件中添加依赖:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131 ...