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之前设置

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

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

java-异常处理和线程的一些简单方法及使用的更多相关文章

  1. JAVA中创建线程的三种方法及比较

    JAVA中创建线程的方式有三种,各有优缺点,具体如下: 一.继承Thread类来创建线程 1.创建一个任务类,继承Thread线程类,因为Thread类已经实现了Runnable接口,然后重写run( ...

  2. Java中终止线程的三种方法

    终止线程一般建议采用的方法是让线程自行结束,进入Dead(死亡)状态,就是执行完run()方法.即如果想要停止一个线程的执行,就要提供某种方式让线程能够自动结束run()方法的执行.比如设置一个标志来 ...

  3. Java中创建线程的三种方法以及区别

    Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例.Java可以用三种方式来创建线程,如下所示: 1)继承Thread类创建线程 2)实现Runnable接口创建线 ...

  4. java中创建线程的3种方法

    1.继承Thread类优点:可以直接使用Thread类中的方法,代码比较简单.缺点:继承Thread类之后不能继承其他类. 2.实现Runable接口优点:实现接口,比影响继承其他类或实现接口.缺点: ...

  5. Java修炼——暂停线程的四个方法

    线程的获取方法:Thread.currentThread() 后面可以加上获取线程的名字 .getName() 这样就成功获取到了线程的名字.             Sleep会导致当前线程休眠一定 ...

  6. java中创建线程的几种方法及区别

    1,实现Runnable接口创建线程 特点: A:将代码和数据分开,形成清晰的模型 B:线程体run()方法所在的类可以从其它类中继承一些有用的属性和方法 C:有利于保持程序风格的一致性 2,继承Th ...

  7. Java实现定时任务的三种简单方法

    第一种方法: /** * 先定义一个任务每天执行的时间点,再写一个死循环,不断地拿当前时间和事先定义的时间去比对,若到时间则执行任务 */ @Test public void test1() { St ...

  8. Java 多线程 - 创建线程的方法 + Executors.newXXXThreadPool()缺点

    java中创建线程的三种方法以及区别: https://www.cnblogs.com/3s540/p/7172146.html 通过Executor 的工具类,创建三种类型的普通线程池: https ...

  9. JAVA中创建线程池的五种方法及比较

    之前写过JAVA中创建线程的三种方法及比较.这次来说说线程池. JAVA中创建线程池主要有两类方法,一类是通过Executors工厂类提供的方法,该类提供了4种不同的线程池可供使用.另一类是通过Thr ...

随机推荐

  1. 很好用的vscode 插件 Open PHP/HTML/JS In Browser 让php文件直接在浏览器打开

    p { font-size: 25px } <body> <h1>安装插件</h1> <img src="https://img2020.cnblo ...

  2. Public Round #1

    传送门 [PR #1]删数 题意:写的很清楚了,略 思路: 首先转化为差分数组,两个连续数相同,删掉,乘二放进去. 发现能互相转化的两个数,符号,值\(/lowbit\)都一样. 把能相互转化的数归为 ...

  3. Code Forces 1367A Sorting Parts 题解

    (原题链接:CF传送门) 题目背景(我看不懂英文嘤嘤嘤) Sorting Parts You have an array a of length n. You can exactly once sel ...

  4. C++ 炼气期之变量的生命周期和作用域

    1. 前言 什么是变量的生命周期? 从变量被分配空间到空间被收回的这一个时间段,称为变量的生命周期. 什么是变量的作用域? 在变量的生命周期内,其存储的数据并不是在任何地方都能使用,变量能使用的范围, ...

  5. NHibernte 4.0.3版本中,使用Queryover().Where().OrderBy().Skip().Take()方法分页获取数据失败

    问题代码如下: var result=repository.QueryOver<modal>() .Where(p=>p.Code==Code) .OrderBy(p=>p.I ...

  6. 基于Vue2.x的前端架构,我们是这么做的

    通过Vue CLI可以方便的创建一个Vue项目,但是对于实际项目来说还是不够的,所以一般都会根据业务的情况来在其基础上添加一些共性能力,减少创建新项目时的一些重复操作,本着学习和分享的目的,本文会介绍 ...

  7. Python列表解析式的正确使用方式(二)

    高级解析式 条件逻辑早些时候,我向您展示了这个公式: python学习交流群:660193417### new_list = [expression for member in iterable] 公 ...

  8. 字节跳动数据平台技术揭秘:基于 ClickHouse 的复杂查询实现与优化

    更多技术交流.求职机会.试用福利,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 ClickHouse 作为目前业内主流的列式存储数据库(DBMS)之一,拥有着同类型 DBMS 难以企及 ...

  9. CF333E Summer Earnings

    CF333E Summer Earnings 题目 https://codeforces.com/problemset/problem/333/E 题解 思路 知识点:枚举,图论,位运算. 题目要求从 ...

  10. 关于vm虚拟机的问题

    这几天搞虚拟机搞的头疼,真是一步一个坑,总结以下几个问题: 安装不了或用户不接受协议:原因应该是你之前装过vm,没有彻底清理,和本次安装形成了对抗,所以我们需要安装WindowsInstallerCl ...