Thread常见方法
线程的状态
初始(NEW):新创建了一个线程对象,但还没有调用start()方法。
运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。
线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,此时处于就绪状态(ready)。就绪状态的线程在获得CPU时间片后变为运行中状态(running)。
阻塞(BLOCKED):表示线程阻塞于锁。
等待(WAITING):进入该状态的线程需要等待其他线程做出一些特定动作(通知或中断)。 ...
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 ...