09.并发编程之共享问题

[TOC]一、共享带来的问题通过下方示例来演示共享变量产生的问题两个线程对初始值为0的静态变量一个做自增,一个做自减,各做5000次@Slf4j(topic = "c.Test01") public class Test01 { static int counter = 0; public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(() -> { for (int i=0; i &...

Java 2022-10-10 PM 1025℃ 0条

08.并发编程之线程状态

[TOC]一、五种状态五种状态的划分主要是从操作系统的层面进行划分的1. 新建状态(New): 线程对象被创建后,就进入了新建状态。例如,Thread thread = new Thread()。2. 就绪状态(Runnable): 也被称为“可执行状态”。线程对象被创建后,其它线程调用了该对象的start()方法,从而来启动该线程。例如,thread.start()。处于就绪状态的线程,随时可能被CPU调度执行。3. 运行状态(Running): 线程获取CPU权限进行执行。需要注意的是,线程只能从就绪状态进入到运行状态。4. 阻塞状态(Blocked): 阻塞状态是线程因为某种原因放...

Java 2022-10-09 PM 1056℃ 0条

07.并发编程之守护线程

[TOC]一、概述Java提供了两种线程,守护线程和用户线程。用户线程:平常使用时所创建的普通线程,也叫非守护线程。守护线程(即 Daemon thread):一般是为工作线程服务的线程,当所有的用户线程结束,守护线程自动结束。二、作用JVM 中的垃圾回收线程就是典型的守护线程,当进程中没有非守护线程了,则垃圾回收线程也就没有存在的必要了,自动销毁。垃圾回收是一个一直需要运行的机制,但是当没有用户线程的时候,也就不需要垃圾回收线程了,守护线程刚好满足这样的需求。Tomcat 中的 Acceptor 和 Poller 线程都是守护线程,所以 Tomcat 接收到 shutdown 命令后,...

Java 2022-10-09 PM 1038℃ 0条

06.并发编程之interrupt方法详解

[TOC]一、概述​ 中断(Interrupt)一个线程意味着在该线程完成任务之前停止其正在进行的一切,有效地中止其当前的操作。线程是死亡、还是等待新的任务或是继续运行至下一步,就取决于这个程序。二、中断线程方法interrupt()描述:该方法用于中断Thread线程,此线程并非当前线程,而是调用interrupt()方法的实例所代表的线程,并不是强制关闭线程,而是将中断标记位设置为true,线程的中断需要在线程内部协作关闭使用示例通过interrupt()中断正在休眠的线程/** * @author lilinchao * @date 2022-10-08 * @...

Java 2022-10-08 PM 1418℃ 0条

05.并发编程之线程常见方法

[TOC]一、常用方法方法名static功能说明注意start() 启动一个新线程,在新的线程运行run方法中的代码start方法只是让线程进入就绪,里面的代码不一定立刻运行(CUP的时间片还没有分给他)。每个线程对象的start方法只能调用一次,如果调用多次会出现IllegalThreadStateExceptionrun() 新线程启用后会调用的方法如果在构造Thread对象时传递了Runnable参数,则线程启动后调用Runnable中的run方法,否则默认不执行任何操作。但可以穿件Thread的子类对象,来覆盖默认行为join() 等待线程运行结束 join(long n) 等待...

Java 2022-10-07 PM 945℃ 0条

04.并发编程之线程运行原理

[TOC]一、概念介绍方法区:是虚拟机中一块线程共享的内存区域,用于存储类信息、常量池、静态变量、编译后的字节码等。堆:是虚拟机中最大的一块线程共享的内存区域,堆是 Java 内存管理的核心区域,所有的对象实例和数组都在堆中分配内存。虚拟机栈:是线程私有的内存区域。虚拟机栈的内存空间是给线程使用的,每启动一个线程,虚拟机都为其分配一块栈内存空间,虚拟机栈中可以存在多个栈帧。栈帧:每个线程分配的虚拟机栈内存区域由多个栈帧(Frame)组成,栈帧对应着每个方法调用时所占用的内存;每个栈帧是由局部变量表、操作数栈、动态链接、方法返回值地址等组成。程序计数器:是一块内存很小的线程私有的内存空间,...

Java 2022-10-06 PM 1207℃ 0条

03.并发编程之线程的运行

[TOC]前言本次运行的环境:JDK 1.8Windows 10系统CentOS 7.X一、测试程序程序示例同时开启两个线程进行交替执行/** * Created by lilinchao * Date 2022/10/4 * Description 启动两个线程同时运行 */ public class Test05 { public static void main(String[] args) { new Thread(() -> { while(true) { try { ...

Java 2022-10-05 PM 1306℃ 0条

02.并发编程之线程的创建

[TOC]前期准备(1)创建Maven项目(2)在pom.xml中引入如下依赖<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <!-...

Java 2022-10-03 PM 981℃ 0条

01.并发编程之进程与线程概述

[TOC]一、进程和线程1.1 进程程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的。当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。windows系统中,经常会看见.exe后缀的文件,双击这个.exe文件的时候,这个文件中的指令就会被系统加载,就能得到一个关于这个.exe程序的进程。进程是“活”...

Java 2022-10-02 PM 1371℃ 0条

09.数仓建设之数仓规范建设指南

[TOC]一、数仓公共开发规范1)层次调用规范稳定业务按照标准的数据流向进行开发,即 ODS –> DWD –> DWS –> APP。非稳定业务或探索性需求,可以遵循 ODS -> DWD -> APP 或者 ODS -> DWD -> DWM ->APP 两个模型数据流。在保障了数据链路的合理性之后,也必须保证模型分层引用原则:正常流向:ODS -> DWD -> DWM -> DWS -> APP,当出现 ODS -> DWD -> DWS -> APP 这种关系时,说明主题域未覆盖全。应将 ...

大数据 2022-09-30 AM 1383℃ 0条