首页 > 系统相关 >程序、进程、线程、多线程是什么,为什么要用多线程?Java基础复习--数组数据结构分析 instanceof关键字 double出现误差、Java继承经典案列-经理与员工

程序、进程、线程、多线程是什么,为什么要用多线程?Java基础复习--数组数据结构分析 instanceof关键字 double出现误差、Java继承经典案列-经理与员工

时间:2022-10-11 18:38:40浏览次数:52  
标签:Java int double 案列 线程 内存 多线程 public

大家可分享关于Java微服务相关知识,包括但不限于Java微服务开发经验、架构组成、技术交流、中间件等内容,我们鼓励springcloud架构为基础发散出击,从而达到技术积累的目的,快来沉淀自己的技术,一起来分享吧!
你可以从以下几个方面着手(不强制),或者根据自己对话题主题的理解进行创作,参考如下:

程序、进程、线程、多线程是什么,为什么要用多线程?


1、程序

实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。所以程序实际上就是静态的代码,程序人生,代码人生

程序、进程、线程、多线程是什么,为什么要用多线程?Java基础复习--数组数据结构分析 instanceof关键字 double出现误差、Java继承经典案列-经理与员工_java

2、进程
进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

其实很好理解进程是什么,在我们的电脑任务管理器上看很明显。进程其实是电脑的应用,包括在后台也有进程,进程通常要使用电脑的内存和cpu 手机上的微信,QQ的运行都是进程

程序、进程、线程、多线程是什么,为什么要用多线程?Java基础复习--数组数据结构分析 instanceof关键字 double出现误差、Java继承经典案列-经理与员工_数组_02

总之,进程是CPU,内存等资源占用的基本单位

3、线程 线程(英语:thread)是操作系统能够进行运算调度的最小单位,而线程不能独立这些CPU和内存,进程由一到多个线程组成的

新建----》运行-----》(阻塞----》等待,计时等待—》)终止。

4、多线程
多个线程并发可以同时进行,线程互相独立,A线程可以先开始,B线程可以提前结束,A不影响B,B不影响A,各做各的路。例子:1 复制多个文件,好家伙,一起来执行吧。2 腾讯管家,好家伙,清理杀毒升级一起来吧,我去休息一下,啪啪几分钟结束

5、为什么要用多线程?单线程效率低,同样的工作,在资源充足的情况下,单线程使用的时间比多线程更长。

没有多线程的话,更多的线程影响性能,需要更多内存,并且在操作系统之前操作麻烦,切换不太方便

多线程----》解决负载均衡问题,充分地利用CPU资源,提高运行效率

如何确保线程安全?synchronized关键字

除此之外,用锁也可解决线程安全问题


Java基础复习–数组数据结构分析 instanceof关键字 double出现误差

1、instanceof关键字
是Java的一个保留字,用来测试一个对象是否为一个类的实例。
它是一个运算符,和==,>,<是同类。

2、浮点型数据float、double,出现误差怎么办?
场景如价格,运营平台统计数据等
用Bigdecimal类 /bi’g’desɪml/
​价格一般不用double,因为可能会丢失精度,一般用BigDecimal,返回String类型

3、数组数据结构分析
数组字实际开发中越来越被集合取代了。
现在一些算法和数据结构还在用数组外,集合被广泛的使用

数组的长度是固定的

程序、进程、线程、多线程是什么,为什么要用多线程?Java基础复习--数组数据结构分析 instanceof关键字 double出现误差、Java继承经典案列-经理与员工_数组_03


这里的= 是把数组对象内存地址赋予给arr变量

栈内存特点:存储的都是局部变量,变量一旦出了自己的作用域就会马上消失,释放内存

然后用new出来的对象,jvm都会在堆内存中开辟一个新的空间,创建新对象

堆内存特点:
堆内存存的都是对象数据,对象一旦使用完,不会马上从内存中消失,
而是要等到垃圾回收器如GC不定时把垃圾对象回收,这个时候才会释放出内存。

垃圾对象:没有变量引用了。

算法用的更多的是二维数组

int [][] a = new int [3][4];
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
a[i][j] = ++ value;
}
}

Java继承经典案列-经理与员工


已知employee员工是超类,manager经理是子类

manager—>employee

set方法给属性赋值,get方法取得值

1、超类Employee.java
定义属性private私有—》构造方法初始化对象—》用set方法给属性赋值—》LocalDate在JDK1.8中,新增了处理日期的类
LocalDate.of(int year, int month, int dayOfMonth) 根据参数设置日期,参数分别为年,月,日

package com.em;//import java.util.Date;import java.time.LocalDate;public class Emlpoyee { private String name; private double salary; private LocalDate dateday; public Emlpoyee(String namae,double salary,int year,int month,int day){ this.name = namae; this.salary = salary;// this.dateday = dateday; dateday = LocalDate.of(year,month,day); } public String getName() { return name; } public double getSalary() { return salary; } public LocalDate getDateday() { return dateday; }}


2、子类Manager.java
定义属性private私有—》构造方法初始化对象—》set方法赋值属性extra—》get方法获取超类的getSalary(),这里不能直接返回想要的值 return salary2 + extra; 这会报错的 —原因是 我文章36.继承私有域的理解
—》解决 借助接口 + super
所以是 double salary2 = super.getSalary();return salary2 + extra;

package com.em;//import java.util.Date;public class Manager extends Emlpoyee{ private double extra; public Manager(String namae,double salary,int year,int month,int day){ super(namae,salary,year,month,day);// super(namae, salary, dateday); extra = 0; //默认值 } public double getSalary() {// double salary2 = getSalary();//不能 double salary2 = super.getSalary(); return salary2 + extra; } public void setExtra(double extra) { this.extra = extra; }}


3、测试类 Test.java
用子类Manager创建对象(new)并赋值—》该对象调用Manager里面赋好值的get方法—》用超类Employee创建对象(new)并赋值,第一个由于后面要循环遍历出来,用上面那个Manger创建好的值—》for(Employee e : staff)把数组循环遍历出来—》sout+e.get方法
另一种方式遍历

for (int i = 0; i < arr.length; i++){
System.out.println(arr[i]);}package com.em;public class Test { public static void main(String[] args) { Manager mange = new Manager(“xiaoming”,80000,2020,1,2); mange.setExtra(19999); Emlpoyee[] emlpoyees = new Emlpoyee[3]; emlpoyees[0] = mange; emlpoyees[1] = new Emlpoyee(“xiaozhang”,80000,2020,1,3); emlpoyees[2] = new Emlpoyee(“xiaohua”,60000,2020,1,3); for (Emlpoyee e : emlpoyees){ System.out.println(“name=” + e.getName() +“,salary=” + e.getSalary() + “,date=” + e.getDateday()); } }}


4、运行结果:


程序、进程、线程、多线程是什么,为什么要用多线程?Java基础复习--数组数据结构分析 instanceof关键字 double出现误差、Java继承经典案列-经理与员工_数组_04


标签:Java,int,double,案列,线程,内存,多线程,public
From: https://blog.51cto.com/u_14604401/5747604

相关文章