java-异常处理和线程的一些简单方法及使用

1.1 子类重写父类含有throws声明异常抛出的方法时的规则:
1.允许不再抛出任何异常.
2.仅抛出部分异常.
3.抛出父类方法抛出异常的子类型异常.
4.不可以抛出额外异常.
5.不能抛出父类方法抛出异常的父类型异常.
通常当一个方法使用throw抛出一个异常时,就需要在当前方法上使用throws定义该异常的抛出以通知调用者。只有RuntimeException及其子类异常抛出时可以不定义,否则必须定义。
1.2 当调用一个含有throws声明异常抛出的方法时,编译器要求必须有处理该异常的手段,没有则编译不通过。
* 处理手段有两种:
* 1:使用try-catch捕获并处理该异常
* 2:在当前方法上继续使用throws将该异常抛出。
异常的一些方法:e.printStackTrace();输出错误堆栈信息,有助于定位出错的代码以便调整程序错误。
String e.getMessage()获取错误消息,通常是该错误出现的原因。
1.3 自定义异常,通常是用来在项目中定义业务逻辑级别的错误。需要重写异常的全部构造方法以保证使用的方便性。
2.1 线程的简单理解:
多线程:多线程允许多段代码"同时"(并发)运行。
创建线程有两种方式
方式一:继承Thread并重写run方法。
例:class MyThread1 extends Thread{
public void run(){
//业务逻辑
}
}
注:这种创建线程的方式有两个不足:
1:由于java是单继承,这就导致继承了Thread就 不能再继承其他类。实际开发中会导致诸多不便。
2:由于将run方法重写,把线程要执行的任务代码定义在了run方法中,就导致该线程与任务有一个必然的耦合关系。不利于线程的重用。
方式二:实现Runnable接口单独定义任务。
例:class MyRunnable1 implements Runnable{
public void run() {
//业务逻辑
}
}
这种创建线程的方式弥补了不能继承其他类的缺点,使线程和业务逻辑分开。
以上两种方式均可以使用创建匿名内部类的方式进行创建。
启动线程调用start方法。不要直接调用线程的run方法。
当start方法执行完毕后,线程纳入线程调度,一旦该线程获取CPU时间片开始运行时会自动调用自己的run方法开始工作。

线程提供的静态方法:
static Thread currentThread()该方法可以获取运行该方法的线程.
static void sleep(long ms)该方法可以将运行当前方法的线程阻塞指定毫秒
通过线程可以获取到一些信息:
Thread t = Thread.currentThread();//获取运行main方法的线程
String name = t.getName();//获取线程名字
long id = t.getId();//获取线程ID(唯一标示)
int priority = t.getPriority();//线程优先级
boolean isAlive = t.isAlive();//线程活动状态
boolean isDaemon = t.isDaemon();//是否为守护线程
boolean isInterrupted = t.isInterrupted();//是否被中断
线程的优先级:线程优先级有10个等级,分别用整数1-10表示。其中1最低,10最高,5为默认优先级。
由于线程不能干涉线程调度工作,即:不能主动获取CPU时间,也不能决定时间片长短。所以只能通过调整优先级来最大程度改善获取CPU时间片的几率。理论上线程优先级越高的线程,获取CPU时间片的次数就越多。
守护线程:当一个进程结束时,所有在运行的守护线程会强制结束当一个进程中所有前台线程结束时,进程结束。所以通常会将可以一直运行的任务,但是当程序主要工作都结束时可以一起结束的任务放在守护线程上运行。
jack.setDaemon(true); //设置后台线程要在start之前设置

 

我是初学者,如有更新不好的,欢迎这位大神指出,谢谢大家!

更多精彩以后更新,转载注明!

转载于:https://www.cnblogs.com/CaiNiao-TuFei/p/7464792.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值