2020-03-13

又是新的一周,不算日子的话都不知道已经一个多月了,但是觉得这周学的东西是所有的最多的,异常和多线程,尤其是多线程,在学完基本多线程之后还有高级多线程,属实有点消化不良,,这周末要再重新看一下了…小小总结一下吧,从异常开始,异常是程序在运行过程中出现的特殊情况,如果不处理,就会出现不必要的损失,其中,异常又分为Error和Exception,Error不可处理,Exception可处理,分为运行时异常RuntimeException,可处理可不处理,和,CheckedException受查异常,这个必须处理。需要用throws声明异常,异常,可以自动抛出,也可以手动抛出,遇到异常就像遇到了return语句,会使程序终止。异常处理常见的结构有try{}catch{},try{}catch{}finally{},try{}finally{}等等等…,其中,在多重catch情况下,要从小到大的顺序,父类异常安排到最后。我们还可以自定义异常,当然,需要继承自Exception或者是它的子类,我们常用的是Runnable,使用的时候必须定义无参构造方法和String message参数的构造方法定义异常原因信息。还可以带有异常声明的方法覆盖,这里面,方法名,参数列表,返回值类型必须和父类相同,子类的访问修饰符需要和父类相同或者比父类更宽,子类中的方法,不能抛出比父类更宽泛的异常,但是可以抛出更多的异常。
说完异常,说说多线程,进程是运行时的程序,,只有真正运行起来的程序,才被称为进程,而单核CPU在任意时间点,只能运行一个进程,宏观并行,微观串行。而线程是轻量级的进程,像进程分配出许多任务,多个线程来完成,多个线程彼此之间完成不同的工作,交替执行,成为多线程。而Java虚拟机中,可以通过代码创建多个独立线程,与main并发执行,main为主线程。而线程想要实行,需要CPU分配时间片,个人理解的就像是分配电量,有电才可以运行的东西一样。创建线程有两个方法,其一是继承Thread类,其二是实现Runnbale接口。基本多线程中常见的方法有3个,sleep()休眠:当前程序主动休眠,有限期等待,yield()放弃:放弃得到的时间片,重新抢时间片,join()结合:允许其他线程加入到当前线程中,如果有3个及以上线程的时候,等待join的线程完成之后才开始竞争时间片,不然一直隔岸观火。还有两种同步方式,一种同步代码块,一种同步方法。需要注意的是只有在调用包含同步代码块的方法或者同步方法时,才需要对象的锁标记,如果不包含同步代码块的方法或者普通方法时,则不需要锁标记,可以直接调用。(只有在同一个进程中才会需要同步,多线程并发访问临界资源时,共享资源一次只能允许一个线程使用,原子操作(不可分割的多步操作,视为一个整体)不可分割)。还有线程通信,等待wait()和通知notify(),还记得我在这里因为只创建了一个等待进程,没创建唤醒进程时被卡死的心情,抓狂😫…高级多线程里面,,,引入了线程池,个人理解就是一个容器,里面可以有多个线程,等待分配,就像移动公司,里面有接线员,,之后等待分配个人的接线员一样。后面Callable接口,具有泛型返回值,可以声明异常,和,Future接口,以阻塞形式等待Future中的异步处理结果(call()的返回值),线程同步是单条执行路径,线程异步是多条执行路径。今天学的剩下的就需要进一步理解了,先放张脑图吧,就这样先,也继续加油!异常 + 线程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值