3509-陈同学大数据学科- 扫二维码继续学习 二维码时效为半小时

(0评价)
价格: 免费

当程序结果可知:当两个线程同时对同一个账户进行取款时,导致最终的账户余额不合理

 

引发原因:线程一执行取款时还没有来得及将取款后的余额写入后台,线程二就已经开始取款

 

解决方案:让线程一执行完毕取款操作后,再让线程二执行即可,将线程的并发操作改为串行操作

 

线程同步:是改并行为串行么???

开发中,不提倡使用。

 

实现方式:

在java语言中使用synchronized关键字来实现同步/对象锁机制从而保证线程执行的原子性,具体方式如下:

原子性:线程执行的单位是最小单元,不能再划分了。

要么不执行,要不执行完,不能打断

 

一个文件中就一个类,类名与文件名相同

Public修饰的公共类必须只有一个,与文件名相同。

 

[展开全文]

线程同步机制:把原来多线程的并发操作改成现在的串行操作

 

当两个人对同一个帐户取款时,

[展开全文]

匿名内部类的的复习

[展开全文]

判断是否为守护线程,设置线程为守护线程

守护线程,是为其它线程为提供服务的

到底是提供什么样的服务呢

 

主线程结束,子线程结束。则为守护线程

守护线程的价值在实例中,体会

 

[展开全文]

int getPriority() 优先级

[展开全文]

Thread类的常用的方法(重点)

 

static void yield(),效果并不明显。不测试

sleep(times)

static void sleep(times) 使当前线程从Running放弃处理器进入Block状态,休眠times毫秒,再返回到Runnalbe如果其他线程打断当前线程的Block(sleep),就会发生

[展开全文]

线程的编号和名称(熟悉)

线程的编号,相当于人的身份证号

线程的名称,相当于人的名称

 

没有setID,ID是线程的唯一编号,就好比,现实生活中,没有人改身份证号

Thread(String name)  在构造方法中也可以写上名称

 

 

[展开全文]

线程的生命周期:

创建:代码中的new对象,是创建线程的过程

 

新建状态:使用new关键字创建之后进入的状态,此时线程并没有开始执行

就绪状态:调用start方法后进入的状态,此时线程还是没有开始执行

运行状态:使用线程调度器调用该线程后进入的状态,此时线程开始执行,当线程的时间片执行完毕后任务没有完成时回到就绪状态

 

多线程的时间原理,就是在抢占CPU的时间片

消亡状态:当线程的任务执行完成后进入的状态,此时线程已经终止

阻塞状态:当线程执行的过程中发生了阻塞事件进入的状态,如:sleep方法

一旦线程进行阻塞状态:阻塞状态解除后进入就绪状态

[展开全文]

匿名内部类的方法

从代码量,继承Thread类的方式,更简单

需要复习匿名内部类的相关知识

 

[展开全文]

计算机的体系结构

 

JAVA语言

 

Java架构

[展开全文]

线程创建与启动方法

自定义类继承Thread类并重写run方法,然后创建该方法的对象调用

调用Start()方法

 

开多线程的目的是,同时执行多个类型

 

执行流程:

1、执行main方法的线程叫做主线程,执行run方法的线程叫做新线程/子线程

2、main方法是程序的入口,对于start方法之前的代码来说,由主线程执行一次,当start方法调用成功后线程个数由1个变成了2个,新启动的线程去执行run方法的代码,主线程继续向下执行,两个线程各自独立运行互不影响

当run方法执行完毕后子线程结束,当main方法执行完毕后主线程结束

两个线程执行没有明确的先后执行次序,由操作系统调度算法来决定

 

 

 

 

[展开全文]

线程的创建

java.lang.Thread 类代表线程,任何线程对象都是Thread类的实例

 

Thread类是线程的模板,封装了复杂的线程开启等操作,封装了操作系统的差异性

 

Thread() 使用无参的方式构造对象

Thread(Runnable target)根据参数指定的引用来构造对象,其中Runnable是个接口类型

接口的实现类

 

void start() 用于启动线程,java虚拟机会自动调用该线程的run方法

 

[展开全文]

如描述软件

垃圾清理,病毒的扫描

一个进程,中又分多个线程

注流的开发都是开发多线程技术,开多个任务

单核CPU

多进程也好,多线程也好,同时干很多活

 

进程是重量级的,也就是新建一个进程会消耗CPU和内存空间等系统资源,因此进程的数量比较局限

 

线程是轻量的,新建线程会共享所在进程的系统资源,因此目前主流的开发都是采用多线程的。

 

单核CPU,我来之后学习java,C,C++

CPU在每个线程中切换,多线程是采用时间片轮转法来保证多个线程的并发执行,所谓并发就是指宏观并行微观串行的机制

4核,8核

java中是多线ktg

 

 

[展开全文]

1.变量随时用随声明

2.打印语句可以合并

3.重复的代码越少越好

[展开全文]
tblywrx · 2022-11-17 · 自由式学习 0

Collection集合是一类接口

容器的功能,就是增删改查

 

[展开全文]

集合类库的学习

集合的由来

当需要记录单个数据内容时,声明一个变量

当需要记录多个类型相同的数据内容时,声明一个一维数组

(连续的内存单元)

当需要记录多个类型不同的数据内容时,需要创建一个对象

Student类有两个成员,一个Id,一个name,在堆区开辟一些内存单元

当需记录多个类型不同的对象数据时,准备一个集合

集合还是一个容器,存放多个类型不同的对象

功能更强大

集合框架顶层的框架是:java.util.Collection集合

集合不是类么??

Map是两列,一对一对的往里面放

多态的第二种场合。关联点。

 

 

[展开全文]

1、可变字符串类(重点)

StringBuilder类 StringBuffer类 概念和常用方法等

StringBuilder效率最高,

2、java8之前的日期相关类

Date类、Calendar类、SimpleDateFormate类

3、java8增加的日期相关类

LocalDate类,LocalTime类、LocalDateTime类

Instant类、DateTimeFormatter类、概念和常用方法

 

 

[展开全文]

DateTimeFormatter类:主要用于格式化和解析日期

 

[展开全文]