紧接着上一期内容,继续来复习一下java基础的知识点,主要来复习一下有关线程的内容吧!

1.向上转型:Animal a = new Cat();//自动类型提升,猫对象提升为动物类型,但是特有的功能无法访问。作用:就是限制对象的特有功能的访问。

向下转型:紧着着Animal a = new Cat();  Cat c = (Cat)a; 如果还想用具体动物猫的特有功能,可以将该对象向下转型。向下转型的目的是:为了使用子类的特有功能

注意:对于转型,自始至终都是子类对象在做着类型的变化

2.instanceof:为了更准确鉴别一个对象的真正类型,只能用于引用数据类型的判断,而instanceof通常在向下转型前用于健壮性的判断。

3.多态3个特点:

(1)成员变量 :

编译时:参考引用变量所属的类中是否有调用的成员变量,有,编译通过,没有,编译失败。运行时:参考引用变量所属的类中是否有调用的成员变量,并运行该所属的类中的成员变量。简单说:编译和运行都参考的是等号左边  (Fu f = new Zi();)

(2)成员函数:

编译时,参考引用变量所述的类中是否有调用的函数,有,编译通过;没有,编译失败。运行时,参考的是对象所属的类中是否有调用的函数。简单说:编译看左边,运行看右边。

(3)静态函数:

编译、运行都看参考引用变量所属的类中是否有调用静态方法,简单说:编译运行都看左边。对于静态函数,不需要对象,只要用类名调用即可

(内部类)

4.内部类访问特点:(1)内部类可以直接访问外部类中的成员(包括外部类中的私有成员)  (2)外部类要访问内部类,必须在外部类中,建立内部类的对象

当分析事物时,发现该事物描述中还有事物,而且这个事物还在访问被描述事物内容。这时就把还有的事物定义成内部类来描述

5.内部类中如果定了静态成员,则该内部类也必须是静态的。

6.为什么内部类能够直接访问外部类成员?

那是因为内部类持有了外部类的引用。外部类名.this

7.内部类在局部位置上只能访问局部中被final修饰的局部变量

8.匿名内部类:就是内部类的简写(其本质就是一个匿名子类对象)。必须有前提:内部类继承或实现一个外部类或者接口

9.error与Exception的区别:

Error :由JVM抛出多的严重性问题,一般不可处理,这种问题的发生一般不采取针对性处理-直接修改程序,而是系统底层错误问题。

Exception:异常,是一般性问题。

(线程)

10.什么是程序?什么是进程?什么是线程?

程序:是在设备上的可执行文件     进程:正在运行的程序,是程序动态的执行过程(动起来的程序)   线程:进程内部单一的顺序控制流     并发:操作系统将时间划分为很多时间片段,均匀的分配给正在运行的程序,微观上走走停停,宏观上都在运行,这现象叫并发。

11.多线程:指同一进程中,并发执行的多个子程序流。当JVM启动时,就启动了多线程,至少有两个线程启动,一个是执行main函数的主线程,另一个是垃圾回收的线程

12.创建线程的目的是什么? 是为了开辟一条执行路径,去执行指定的代码和其他代码实现同时运行。

13.Java中建立线程有两种方法:(1)一种是继承Thread类,重写run()方法  (2)实现Runnable接口,并通过Thread和实现Runnable的类建立线程 。

14.实现Runnable接口的好处:(1)将线程的任务从线程的子类中分离出来,进行了单独的封装,按照面向对象的思想将任务封装成对象。  (2)避免了Java单继承的局限性(注意:在使用多线程时一定要考虑线程的安全问题)

15.线程安全问题产生的原因?(1)多个线程在操作共享的数据 (2)操作共享数据的线程代码有多行

16.当一个线程在执行操作共享数据的多条代码过程中,其他线程参与了运算就会导致线程安全问题的产生。

解决思路:就是将多条操作共享数据的线程代码封装起来,当有线程在执行这些代码的时候,其他线程不可参与运算。必须要当前线程把这些代码都执行完毕后,其他线程不可参与运算。

(1)在Java中,用同步代码块就可以解决这个问题

同步代码块格式:    synchronized(对象){

            需要被同步的代码块

          }

同步的好处:解决了线程的安全问题

同步的弊端:会相应降低效率,因为线程外的线程都会判断同步锁。

同步的前提:同步中必须有多个线程并使用同一把锁

(2)同步函数:同步函数使用的锁是固定的this

17.同步函数与同步代码块的区别?

同步函数使用的锁是固定的this。同步代码块使用的锁是任意的对象(建议使用)

18.静态的同步函数使用的琐是:该函数所属字节码文件对象,可以用getclass()方法获取,也可用当前类名.class表示。

Java SE(3)的更多相关文章

  1. 黑马程序员 ——Java SE(1)

    ----<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训 ...

  2. Java SE(1)

    Java SE基础回顾 1.循环语句中的break是终止全部循环,跳出循环体:而continue是终止本次循环,跳执行下一循环 2.return语句有两个作用:返回值:结束方法的运行 3.对于java ...

  3. 黑马程序员—— Java SE(3)

    ----<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训 ...

  4. 黑马程序员—— Java SE(2)

    ----<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训 ...

  5. Java SE(2)

    1.this的两种用法:(1)当成员变量和局部变量重名是,可以用关键字this来区分 .this代表对象,代表的是this所在函数所属对象的引用(哪个对象调用了this所在的函数,this就代表哪个对 ...

  6. 再回首,Java温故知新(一):Java概述

    Java发展历程 Java的发展要追溯到1991年,Patrick Naughton(帕特里克·诺顿)和James Gosling(詹姆斯·高斯林)带领Sun公司的工程师打算为有线电视转换盒之类的消费 ...

  7. Java集合(1)一 集合框架

    目录 Java集合(1)一 集合框架 Java集合(2)一 ArrayList 与 LinkList Java集合(3)一 红黑树.TreeMap与TreeSet(上) java集合(4)一 红黑树. ...

  8. 为什么你学不会递归?告别递归,谈谈我的一些经验 关于集合中一些常考的知识点总结 .net辗转java系列(一)视野 彻底理解cookie,session,token

    为什么你学不会递归?告别递归,谈谈我的一些经验   可能很多人在大一的时候,就已经接触了递归了,不过,我敢保证很多人初学者刚开始接触递归的时候,是一脸懵逼的,我当初也是,给我的感觉就是,递归太神奇了! ...

  9. Java设计模式(1)工厂模式(Factory模式)

    工厂模式定义:提供创建对象的接口. 为何使用工厂模式 工厂模式是我们最常用的模式了,著名的Jive论坛,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见. 为什么工厂模式是如此常用?因 ...

随机推荐

  1. 从一个url地址到最终页面渲染完成,发生了什么?

    从一个url地址到最终页面渲染完成,发生了什么? 1.DNS 解析 : 将域名地址解析为IP地址 浏览器DNS缓存 系统DNS缓存 路由器DNS缓存 网络运营商DNS缓存 递归搜索: www.baid ...

  2. JavaScript翻转字符串方法

    先把字符串转化成数组String.prototype.split(),再借助数组的reverse方法翻转数组顺序(Array.prototype.reverse()),然后把数组转化成字符串. 使用的 ...

  3. Socket网络编程--初级

    如果想开发一个基于TCP/IP协议的网络程序,应用程序之间则主要通过Socket交换数据 .NET Socket支持四种编程模式 1.居于阻塞模式的Socket编程 2.”非阻塞“模式的Socket编 ...

  4. idae父子项目Test执行报Result Maps collection already contains value for xxx

    现象:同一个springmvc工程使用eclipse和idea用Tomcat启动都没问题,但是如果走单元测试使用到了@ContextConfiguration这个spring的上下文注解idea出问题 ...

  5. 【Flutter学习】之VSCode下Flutter常用终端命令行

    Flutter 常用命令行 相关项目操作 查看Flutter版本 查看当前版本 flutter --version 查看所有版本 flutter version 打印所有命令行用法信息 flutter ...

  6. AutoCAD二次开发-使用ObjectARX向导创建应用程序(HelloWorld例子)

    AutoCAD2007+vs2005 首先自己去网上搜索下载AutoCAD2007的ARX开发包. 解压后如下 打开后如下 classmap文件夹为C++类和.net类的框架图,是一个DWG文件. d ...

  7. [NOIP模拟13]题解

    A.矩阵游戏 其实挺水的? 考场上根本没有管出题人的疯狂暗示(诶这出题人有毛病吧这么简单的东西写一大堆柿子),而且推公式能力近乎没有,所以死掉了. 很显然乘法有交换率结合率所以操作顺序对最终结果没什么 ...

  8. php中正则表达式总结(不容错过)

    php中正则表达式总结(不容错过) 一.总结 一句话总结: 无论js,php,java,python里面中的正则都是差不多一样的,所以用点脑子 用到正则的地方很多,比如 nginx的配置文件 1.ph ...

  9. windows网络函数

    The following functions are used in Windows networking: MultinetGetConnectionPerformance WNetAddConn ...

  10. dubbo入门学习(一)-----分布式基础理论、架构发展以及rpc、dubbo核心概念

    一.分布式基础理论 1.什么是分布式系统? <分布式系统原理与范型>定义: “分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统” 分布式系统(distributed ...