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. 基于云服务MRS构建DolphinScheduler2调度系统

    摘要:本文介绍如何搭建DolphinScheduler并运行MRS作业. 本文分享自华为云社区<基于云服务MRS构建DolphinScheduler2调度系统>,作者: 啊喔YeYe . ...

  2. Win10 pycharm中显示PyTorch tensorboard图

    import numpy import numpy as np import torch import matplotlib.pyplot as plt import torch.nn as nn i ...

  3. Tomcat部署界面使用burp爆破

    打开界面显示私密连接,正常抓包. 抓包查看Authorization的数据 Basic 后面的数据是经过base64加密后的.格式为admin:123456 勾选对应参数,payload设置为Cust ...

  4. 关于vue项目中axios跨域的解决方法(开发环境)

    1.在config文件中修改index.js proxyTable: { "/api":{ target: 'https://www.baidu.com/muc/',//你需要跨域 ...

  5. Vue MD5加密你用吗?

    安装 npm install --save js-md5 1.按需引入(在你需要的项目中引入) 引入: import md5 from 'js-md5' 使用: md5('加密信息') 2.全局引入( ...

  6. python 基础知识-day6(内置函数)

    1.sorted():用于字典的排序 dict1={"name":"cch","age":"3","sex&q ...

  7. Vue2自定义插件的写法-Vue.use()

    最近在用vue2完善一个项目,顺便温习下vue2的基础知识点! 有些知识点恰好没用到时间一长就会淡忘,这样对自己是一种损失. 定义一个对象 对象里可以有任何内容 但install的函数是必不可少的,因 ...

  8. Spring IOC 为什么能降低耦合

    有同学在学习 Spring 框架中可能会问这样的问题,为什么通过依赖注入就可以降低代码间的耦合呢?我通过 new 生产对象不也可以吗,不就是一行代码的不同,一个是 @Resource 注入,一个是 n ...

  9. 由ASP.NET Core根据路径下载文件异常引发的探究

    前言 最近在开发新的项目,使用的是ASP.NET Core6.0版本的框架.由于项目中存在文件下载功能,没有使用类似MinIO或OSS之类的分布式文件系统,而是下载本地文件,也就是根据本地文件路径进行 ...

  10. Turtle绘图——python简单上手小案例

    Turtle绘图 Turtle模块提供了在二维平面上移动的环境. Turtle可以实现位置.航向和各种可能的状态和动作. import turtle as tu roo = tu.Turtle() # ...