A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 厦门校区 黑马粉丝团   /  2018-10-29 21:17  /  1163 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天我们学习了异常和多线程,请根据自己的理解回答下面问题:
1.throw和throws的区别?
2.异常有几种处理方式?
3.什么是进程,什么是线程?
4.run()方法和start()方法的区别?

8 个回复

倒序浏览
1.一个用来throw new 一个异常对象 ,一个用来抛出异常
2.try{}catch(){}finally{}   和throws
3.电脑运行的一个应用程序叫做一个进程, 一个应用程序也可能有多个进程
4.run()用来写要运行的程序内容
star()用来调用执行该程序并使虚拟机运行run()

点评

start()方法在执行的时候是启动一个新的线程,然后再调用run()方法  发表于 2018-10-30 19:41
回复 使用道具 举报
(1):   throw关键字通常用在方法体中,并抛出一个异常对象,程序在执行到throw语句时,立即停止,它后面的语句都不执行,而throws关键字通常被应用在声明方法时,用来指定可能抛出的异常.多个异常可以使用逗号隔开,当在主函数中调用方法的时候,如果发生异常,就会将异常对象抛给方法调用处.
(2):   异常处理有两种方式,分别是throws和try catch finally; throws关键字将异常对象直接抛给方法调用处,try catch则是直接捕捉异常,自己处理,处理完毕后面的程序可以继续执行;
(3):   进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建,运行到消亡的过程;
        线程:线程是进程中的一个执行单位,负责当前进程中程序的执行,一个进程中至少有一个线程,一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程序.
(4):    run();方法是定义Thread类的子类时,重写Thread类的run()方法;该run()方法就代表了线程需要完成的任务,因此把run()方法称为线程执行体.
        statr();方法则是调用Thread类的子类对象的时候,来启动该子类线程的.
回复 使用道具 举报
1.throw和throws的区别?(1)throw是用来抛出异常对象,在方法体内部使用;
(2)throw是声明该方法可能抛出的异常(多个异常用逗号隔开),在方法的外部的声明处使用。
2.异常有几种处理方式?
(1)使用throws声明抛出异常,由该方法的调用者来处理,发生异常处的后续代码不能执行;
(2)使用try...catch捕获异常,如果catch中没有再抛出异常,异常的处的后续代码还可以执行。
3.什么是进程,什么是线程?
(1)进程代表内存中的一个应用程序,有自己独立的内存空间,一个应用程序可以有多个进程;
(2)线程是进程中的一个执行单元,一个进程至少包含一个线程;每个线程都有机会获取CPU执行权,所以可以实现一个应用程序中的多个线程功能同时执行。
4.run()方法和start()方法的区别?
(1)run()方法是线程的执行程序,写的是线程要执行的内容,创建一个继承于Thread的自定义线程类,需要重写此方法;
(2)start()方法是开启一个新的线程。

评分

参与人数 1技术分 +1 收起 理由
厦门校区 + 1 赞一个!

查看全部评分

回复 使用道具 举报
1.throw和throws的区别?
答:(1)throw是一个异常抛出的动作,该关键字用在方法体内,格式为:throw new异常类名(参数),用来抛出一个指定的异常对象。这个异常对象可以是java已封装的异常,也可以是自己定义的。当方法调用者所传入的参数经过判断确定为不合法时,就执行该条语句,此处将创建一个临时异常对象,写入发生异常的原因,并结束当前方法的执行(throw之后的语句将不会执行),接着,控制流程将转去堆栈中,从第一个catch块开始,逐个调用检查这些catch块,如果与catch()中指定的类型一致,则将对象拷贝,作为参数,传入catch()中,catch捕捉到特定的异常对象后,就会在其中进行适当处理,然后跳过所有剩下的catch,继续执行后续的代码(如果一个catch中无法完成异常的全部处理,则重新抛出异常)。如果调用有异常存在的函数最终没有被try{}catch(){}finally{}函数捕获处理,程序将中断。
(注意:在有继承关系的异常类型中,被继承的异常应当放在后面,根据多态原理,如果父类放前面,就会将所有的子类对象接收,那样的话,编译的时候就会报错:已捕捉到异常。Exception异常应当放在最后面,可用来捕捉其他没有料到的异常。)
(2)throws是方法可能抛出异常类型的声明(用在声明方法时,表示该方法可能要抛出异常)。调用者必须做出处理(捕获或者继续抛出)。对于编译异常来说,只有抛出后,该处才能编译通过。如果该方法可能有多种异常情况产生,那么在throws后面可以写多个异常,用逗号隔开。
2.异常有几种处理方式?
答:有两种处理方式。一种是进行捕获处理,另一种就是继续将问题声明出去,让调用者去处理。
3.什么是进程,什么是线程。
答:(1)进程是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。
(2)线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。
(3)程序调用进程,进程调用线程。进程是指系统中正在运行的一个应用程序,是系统进行资源分配的独立单位,每个进程拥有独立的地址(内存)空间和系统资源。线程是程序内部的顺序控制流,是一个进程里面不同的执行路径,也是程序使用CPU的最基本单位。每个线程使用其所属进程的栈空间,同时还拥有自己的寄存器和栈。同一个进程内的多个线程共享虚拟内存,会共享部分状态,多个线程可以读写同一块内存(一个进程无法直接访问另一进程的内存)。所以,进程运行上对内存的开销比较大,而线程比较节省内存。
4.Run()方法和star()方法的区别。
答:(1)定义Thread类的子类,并重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务,因此把run()方法称为线程执行体。
(2)调用Thread子类的实例,即创建了线程对象。调用线程对象的start()方法来启动该线程。
(3)Java线程是通过java.lang.Thread类来实现的。JVM启动时会有一个由主方法所定义的线程,可以通过创建Thtead的实例来创建新的线程。每个线程都是通过特定的Thread对象所对应的方法run()来完成其操作的。通过Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,意味着它可以由JVM调度并执行,并不意味着就会立即运行。当CPU分配给它时间时,它才开始执行。多线程就是分时利用CPU,宏观上让所有线程一起执行,也叫并发。

点评

o( ̄▽ ̄)d  发表于 2018-10-30 18:43

评分

参与人数 1技术分 +1 收起 理由
厦门校区 + 1 赞一个!

查看全部评分

回复 使用道具 举报
1.throw和throws的区别?
(1)throw 是在(方法内部)创建一个异常对象,执行该语句体时,会立即停止程序的执行.
(2)throws 是方法的异常声明,声明位置: (方法(参数) throws 异常类名),是声明方法体内出现的异常对象,声明多个异常用逗号隔开,方法声明的异常会交给方法的调用者进行处理.
2.异常有几种处理方式?
两种处理方式:
(1)throws 声明异常:
        1.声明格式:
        修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2…{   }       
        2.将方法内抛出的异常在方法参数后面进行声明,会把异常交给调用着处理,
(2)try..catch 捕获处理异常
        1.使用格式:
        try{
                 编写可能会出现异常的代码
        }catch(异常类型  e){
                 处理异常的代码
                 //记录日志/打印异常信息/继续抛出异常
        }
        2.捕获(可能有异常的代码)处理后面还有代码的话也会被执行

3.什么是进程,什么是线程?
(1)进程: 一个应用程序在内存运行的时候称为进程,是系统运行程序的基本单位,每一个应用程序可以有多个进程,一个进程可以有多个线程.
(2)线程: 负责当前进程中程序的执行,每一个进程中至少有一个线程.

4.run()方法和start()方法的区别?
(1)继承 Thread 线程类,重写run()方法,run()方法的方法体是线程需要完成的任务.
(2)创建 Thread 的子类对象,调用 start() 方法,开启一个子线程任务,执行的是run()方法中的任务.
注意:
(3)创建 Thread 的子类对象调用run的话,只是执行了run()方法的方法体内容,并不是开启了一个子线程任务.
(4)不能多次启动同一个线程,一个线程结束后,不能再重新启动该线程
(5)正确创建多线程任务: 创建 Thread 的子类,重写父类的run()方法,并创建 Thread 子类对象,通过子类对象调用父类Start()方法,开启子线程任务

评分

参与人数 1技术分 +1 收起 理由
厦门校区 + 1 赞一个!

查看全部评分

回复 使用道具 举报
(1):   throw关键字通常用在方法体中,并抛出一个异常对象,程序在执行到throw语句时,立即停止,它后面的语句都不执行,而throws关键字通常被应用在声明方法时,用来指定可能抛出的异常.多个异常可以使用逗号隔开,当在主函数中调用方法的时候,如果发生异常,就会将异常对象抛给方法调用处.
(2):   异常处理有两种方式,分别是throws和try catch finally; throws关键字将异常对象直接抛给方法调用处,try catch则是直接捕捉异常,自己处理,处理完毕后面的程序可以继续执行;
(3):   进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建,运行到消亡的过程;
        线程:线程是进程中的一个执行单位,负责当前进程中程序的执行,一个进程中至少有一个线程,一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程序.
(4):    run();方法是定义Thread类的子类时,重写Thread类的run()方法;该run()方法就代表了线程需要完成的任务,因此把run()方法称为线程执行体.
        statr();方法则是调用Thread类的子类对象的时候,来启动该子类线程的.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马