黑马程序员_java基础笔记第四天

 

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

 

一 异常:
  1 定义:
  1 Java对不正常情况描述户的对象体现。描述不正常情况的类称之我异常类。

  2 特点:
  1 将问题封装。
  2 将问题与代码隔离。

  3 Error:
  1 不可处理异常。
  2 是jvm虚拟机抛出的严重问

  4 Exception:
  1 可处理异常。
  2 分为编译时期异常和运行时期异常。 
  3 一般处理编译时期异常,不处理运行时期异常,因为程序员编程时输入错的需要停掉修改代码。

  5 异常的处理方式:
  1 throws 在方法上抛出异常,当解决表时在方法上抛出。
  2 try{}catch(异常对象){}finally{};

  6 设定异常:
 
  1 throw:当在函数内声明异常未处理时是函数上必须抛出此异常。RuntimeException函数可以声明
  2自定义异常:当编写程序时有自己定义的异常,继承Exception,或RuntimeException。

  7 格式
  1 一个try一个catch。
  2 一个try多个catch。
  3 一个或多个catch和一个finally。
  4 一个try一个finally。在其他程序中catch。

  8 注意:
  1 当在多个catch时,上面的catch里的异常不能是下面catch的父类。
  2 方法内抛了非运行时异常,那么方法上一定要抛异常。
  3 当在函数内抛出异常但没处理,发生异常时下面的代码会执行不到。
  4 获取到异常后不能决绝时,也可以抛出两一个异常。
  5 子类不可以抛出父类没有定义过的异常,如有异常时必须在本类方法中处理。
  6 可以抛出多异常。

 9 异常的一些方法: 
   1 String getMessage(),返回此 throwable 的详细消息字符串。
  2 void printStackTrace(PrintWriter s),将此 throwable 及其追踪输出到指定的 PrintWriter。
   3 String toString(),返回此 throwable 的简短描述。


二 包:
 1 定义:
  1 package
  2 包就是文件夹。
  3 用来存储class文件。
  4 可以在不同包内定义相同名的类,而不冲突。
  5 所以在实用类时要明确是那个包下的类。

 2 特点:
  1 统一管理。
  2 可以将class和Java文件分离,提高安全性。


 3 格式: 
  1 Java文件第一行,import.多级包名.类名。
  2 本类中调用了其他包的对象时应先导入此包。

 4 访问权限:
    public     protected    default   private
  1 包与包   ok  
  2 不同包子类 ok  ok   
  3 包中  ok  ok   ok
  4 类中  ok  ok   ok  ok

 5 静态导入:
  1 Java1.5新特性。
  2 将导入一个类的所有静态成员。
  3 方便使用不用再加类名点,但是阅读困难。

三 多线程:
 1 定义:
  1 可个进程内可能会有多条执行路径,每条路径经是以线程。
  2 CPU在快速的切换执行这些路径。
  3 Java虚拟机是多线程的,在运行main方法时,还在调用垃圾回收机制。

 2特点:
  1 使多个程序可以同时执行。
  2 提高了运行速率。

 3 使用:
  1 继承Thread类,或实现Runnable接口。
  2 重写run方法。
  3 调用static方法,1,开启以个线程。2,执行run语句。
  
 4 状态:
  1 创建状态。
  2 就绪状态。
  3 运行状态。
  4 等待状态。
  5 阻塞状态。
 5 同步:
  1 前提:
   1 当多个线程并发访问共享数据,数据被多条语句调用时,可能导致数据错乱。
   
  2 解决
   1 将共享数据封装在同步到吗中。
   2 snychronized{};声明在方法内,相当于给数据上了锁。
   3 snychronized 放在方法返回至前面。

  3 snychronized相关
   1 每个同步都有锁;
   2 多个run方法访问共享数据是同步锁要相同。
   3 同声明在函数上时锁匙this
   4 懒汉式并发访问同步锁是,类.class。

  4 等待唤醒机制;
   1 对象.wait()等待,前面要和锁对象相同,调用时会出现异常。
   2 notify()唤醒,前面要和锁对象相同,一般唤醒第一个等待的线程。
   3 notifyAll()唤醒线程池中所有线程。
   4 他们都是定义在Object类中的。
   5 注意wait和sleep最大的差别是wait释放了锁。

 6 Lock:
  1 定义:
   1 显示同步机制,就是可以看到的锁。

  2 特点及使用:
   1 1.5版本的新特性。
   2 可以替代snychronized;
   3 把wait()  notify()  notifyAll()封装为一个Condition对象。
   4 await()等待,signal()唤醒本方线程。 signalAll() 唤醒本方所有线程。
   5 使用await(),signal()省去循环判断标记的环节。
  7 死锁:
  1 在两个语句的同步中嵌套了不相同同步锁,而锁的位置是相反的。
  2 在进入第一个锁内,想进第二个锁时,锁被另一个线程锁占用,
    而他想进入的锁也被本线程占用这时程序就停在那锁死了
 8线程的一些方法:
  1 设置优先级 setPriority(1~10)
  2 Thread.yield();暂停当先线程执行其他线程。
  3 join();插入线程执行完插入线程后在执行本线程。
  4 static Thread currentThread():获取当前线程对象。
  5 getName(): 获取线程名称。
  6 设置线程名称:setName或者构造函数。

  
死锁代码:  
public class Student implements Runnable {
 int x=0;
 @Override
 public void run() {
  x++;
  if(x==1){
  synchronized ("1") {
  
   synchronized ("2") {
   
   }
  }}
  else{
  synchronized ("2") {
   
   synchronized ("1") {
   
   }
  }
 }
 }
 
 

 ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值