Java笔记整理第二文之161013期

前言

Java笔记整理上一次已经是三周之前了,在这三周内(除去国庆实际只有两周)又学习了很多的新知识,今天来整理一下笔记,顺带梳理思路 :mrgreen:

正文

异常

抛出处理(throw,throws):

  • throw:用于方法内部,作用是在方法内部抛出一个异常对象且只能跟一个异常对象。
  • throws:用于方法声明上,作用是在方法声明上声明抛出异常类型并可以跟多个异常对象。

异常处理:

异常分类:

  • 运行时异常: RuntimeException以及RuntimeException的子类都是属于运行时异常。
  • 除了运行时异常就是编译异常。

异常分类:

  • 运行时异常: RuntimeException以及RuntimeException的子类都是属于运行时异常。
  • 除了运行时异常就是编译异常。

Package

  • 被访问的包中的类权限必须是public的。
  • 类中的成员权限:public或者protected
  • protected是为其他包中的子类提供的一种权限

包的4种权限图解:

Java笔记整理第二文之161013期

多线程

创建方式一:继承Thread类

  1. 子类覆盖父类中的run方法,将线程运行
    的代码存放在run中。
  2. 建立子类对象的同时线程也被创建。
  3. 通过调用start方法开启线程。

注意:多次调用start()会报异常。

创建方式二:实现Runnable接口

  1. 实现类覆盖接口中的run方法。
  2. 通过Thread类创建线程,并将实现了
    Runnable接口的子类对象作为参数传递给
    Thread类的构造函数。
  3. Thread类对象调用start方法开启线程。

Thread和Runnable的关系

  1. Thread是Runnable 的子类。
  2. 实际上Thread和Runable的关系和代理设计模式很像,这里的Thread就是代理类。我们自己所实现的类才是真正的。

Thread和Runnable的区别

  • Runnable可以共享数据

同步:synchronized

同步的前提:

  • 同步需要两个或者两个以上的线程。
  • 多个线程使用的是同一个锁。

同步的弊端:

  • 当线程相当多时,因为每个线程都会去判断同步上的锁,这是很耗费资源的,无形中会降低程序的运行效率。

常用方法:

  • wait():使当前线程进入堵塞状态等待(特点:释放cpu执行权,释放锁)。
  • notify():唤醒一个标识所属的同步的锁的线程
  • notifyAll():唤醒所有标识所属的同步的锁的线程

同步函数

  • 在函数上加上synchronized修饰符即可。
  • 同步函数的锁是this,而同步代码块的锁可以是任意对象。
  • 静态同步函数的锁是本类的字节码对象。

注意:同步应用过多就有可能会出现死锁,导致线程出现无限期地僵持下去的局面。

锁:Lock

在多线程编程里面一个重要的概念是锁定,如果一个资源是多个线程共享的,为了保证数据的完整性, 在进行事务性操作时需要将共享资源锁定,这样可以保证在做事务性操作时只有一个线程能对资源进行操作, 从而保证数据的完整性。

  • lock.lock():取得锁
  • lock.unlock():释放锁

Condition

Condition:监视器,常与Lock一起使用,可以让不同的共享线程有不同的监视器,从而实现线程之间的相互配合。

  • await():造成当前线程在接到信号或被中断之前一直处于等待状态。
  • signal():唤醒一个等待线程。
  • signalAll():唤醒所有等待线程。

SimpleDateFormat

SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。

Runtime

每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过 getRuntime 方法获取当前运行时。

DecimalFormat

DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。该类设计有各种功能,使其能够解析和格式化任意语言环境中的数,包括对西方语言、阿拉伯语和印度语数字的支持。它还支持不同类型的数,包括整数 (123)、定点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)。所有这些内容都可以本地化。

BigInteger

不可变的任意精度的整数。所有操作中,都以二进制补码形式表示 BigInteger(如 Java 的基本整数类型)。BigInteger 提供所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、位操作以及一些其他操作。

clone()

创建并返回此对象的一个副本。

Timer

一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。

    A+
所属分类:风雨笔记

发表评论

请在下方填写评论信息

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen:

表情 粗体 斜体 图片 引用 链接 删除线 下划线 插代码 签到

目前评论:6   其中:访客  3   博主  3

  1. avatar 232 0  来自天朝的朋友 火狐浏览器 Windows 10 四川省成都市 电信

    签到成功!签到时间:2016-10-14 18:05:00,每日打卡,生活更精彩哦~

  2. avatar 免费SSL 2  来自天朝的朋友 谷歌浏览器 Windows 8.1 江苏省苏州市 电信

    朋友,交换链接吗?

  3. avatar 李光春 2  来自天朝的朋友 谷歌浏览器 Windows 7 广东省广州市越秀区 电信

    最近我也在学这个