大数据之线程学习

简介:   为什么要让run()方法自动开启。  cpu有随机性,线程抢到cpu,才能干活,所以run()方法必须通过strat()方法自动启动,这样cpu就获得了一个信号,知道该线程可以抢占cpu资源;手动运行垃圾回收器原理:当执行gc是,会触发垃圾回收机制,开启垃圾回收线程,执行finalize方...

  为什么要让run()方法自动开启。
  cpu有随机性,线程抢到cpu,才能干活,所以run()方法必须通过strat()方法自动启动,这样cpu就获得了一个信号,知道该线程可以抢占cpu资源;

手动运行垃圾回收器

原理:当执行gc是,会触发垃圾回收机制,开启垃圾回收线程,执行finalize方法

cpu的特性:多个线程之间是抢cpu的关系,cpu有随机性

主函数结束,主任务区结束,主线程随着任务的结束而结束,线程随着任务的开始而开始

创建线程

默认情况下,主线程和垃圾回收线程都是由系统创建

①用Thread创建线程对象

Thread thread1=new Thread(); //只是创建Thread对象
thread1.start(); //开启线程
Thread类里的run()方法默认是空的,所以start()方法执行结果
所以需要继承Thread类 重写run()方法
若run()方法直接被手动调用,run()对应的线程跟调用该方法所在的线程对应
Thread类实现了Runnable接口,Runnable接口里面只有run()方法,Thread类里实现的run()方法也只是空方法体,需要被继承去重写

创建一个A类实现Runnable接口,重写run()方法
A a=new A();
Thread to=new Thread(A);
to.start();
给某个方法的线程冲突部分加锁
锁的条件
①锁必须是对象
②要被所有的线程共享

同步代码块
synchronized(this){代码块}

同步函数
非静态 public synchronized void xxx(){} //默认的锁是this synchronized(this)
静态 public synchronized static void xxx(){} //默认的锁是当前类的字节码文件 synchronized(xx.class)
notify(终止线程休眠) wait(线程休眠,不可以抢占cpu)
wait()-->必须在同步环境中使用,必须使用锁调用,执行这行代码,对应的是哪个线程,就
notify()-->唤醒的是同一把锁下的线程,
Lock(显示同步) 替换 Synchronized(隐式同步)

//创建锁对象 Lock lock=new ReentrantLock();
//用于生产任务的Condition
Condition proCon = lock.newCondition();

//用于结束任务的condition
Condition conCon = lock.newCondition();

//开启锁
lock.lock();
proCon.await();
conCon.signal();
conCon.await();
proCon.signal();

//关闭锁
lock.unlock();

守护线程
当程序调用setDaemon方法时,并且将参数设置成true,当前线程就变成了了守护线程,只要主线程结束,该守护线程就会结束,这个方法一定要在start前调用
join()方法,优先级高于主线程,主线程会等当前的线程执行完后再去执行;该方法是在start之后。

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
1月前
|
Java 调度 C#
C#学习系列相关之多线程(一)----常用多线程方法总结
C#学习系列相关之多线程(一)----常用多线程方法总结
|
1月前
|
安全 编译器 C#
C#学习相关系列之多线程---lock线程锁的用法
C#学习相关系列之多线程---lock线程锁的用法
|
1月前
|
C#
C#学习相关系列之多线程---ConfigureAwait的用法
C#学习相关系列之多线程---ConfigureAwait的用法
|
1月前
|
C#
C#学习相关系列之多线程---TaskCompletionSource用法(八)
C#学习相关系列之多线程---TaskCompletionSource用法(八)
|
1月前
|
Java C#
C#学习系列相关之多线程(五)----线程池ThreadPool用法
C#学习系列相关之多线程(五)----线程池ThreadPool用法
|
3月前
|
存储 Java 调度
从零开始学习 Java:简单易懂的入门指南之线程池(三十六)
从零开始学习 Java:简单易懂的入门指南之线程池(三十六)
|
3月前
|
Java 调度
从零开始学习 Java:简单易懂的入门指南之多线程(三十四)
从零开始学习 Java:简单易懂的入门指南之多线程(三十四)
|
3月前
|
数据处理
多线程与并发编程【线程对象锁、死锁及解决方案、线程并发协作、生产者与消费者模式】(四)-全面详解(学习总结---从入门到深化)
多线程与并发编程【线程对象锁、死锁及解决方案、线程并发协作、生产者与消费者模式】(四)-全面详解(学习总结---从入门到深化)
42 1
|
3月前
|
设计模式 监控 安全
多线程设计模式【多线程上下文设计模式、Guarded Suspension 设计模式、 Latch 设计模式】(二)-全面详解(学习总结---从入门到深化)
多线程设计模式【多线程上下文设计模式、Guarded Suspension 设计模式、 Latch 设计模式】(二)-全面详解(学习总结---从入门到深化)
62 0
|
1月前
|
C#
C#学习系列相关之多线程(二)----Thread类介绍
C#学习系列相关之多线程(二)----Thread类介绍