java实验之多线程与异常处理

AI学习机核心功能实测:从指尖查词到家长管控,技术如何赋能家庭辅导 这次我们来看一款面向家庭学习场景的智能硬件——希沃V20 AI学习机。它不是一款简单的平板电脑,而是集成了AI辅导、学习资源管理、专注力训练和家长管控于一体的专用设备。对于关心孩子学习效率、希望借助技术手段辅助家庭辅导的家长来说,这类产品能否真正解决痛点,其AI能力是否实用,是核心的评判标准。 希沃V20最值得关注的是其宣称的“AI智能辅导”能力。这意味着它试图通过技术手段,模拟或辅助真人辅导的部分功能,例如作业检查、知识点讲解、错题分析等。硬件门槛相对明确,作为一款一体化的学习机,用户无需自行配置环境,核 阅读详情
  • 实验目的:

 

了解线程的概念、线程的生命周期,掌握多线程的编程。掌握异常的概念以及如何定义、抛出和捕捉处理异常。 

 

二、实验环境:

 

一台配置有java环境,装有eclipse的电脑。

 

三、实验内容:

(写出主要的内容)

(一) 实验要求

  1. 掌握利用Java语言编写多线程程序的方法
  2. 掌握线程的调度方法
  3. 编写一个程序,用来捕获各种类型的异常
  4. 编写一个程序,用来说明异常处理块中各个语句块的作用
  5. 熟悉异常的类型及其产生的原因

(二) Thread子类的方法实现多线程

  1. 编写 TwoThreadsTest.java 程序文件,源代码如下。

class SimpleThread extends Thread {

     public SimpleThread(String str) {

         super(str);

     }

     public void run() {

         for (int i = 0; i < 10; i++) {

             System.out.println(i + " " + getName());

             try {

                 sleep((int)(Math.random() * 1000));

             } catch (InterruptedException e) {}

         }

         System.out.println("DONE! " + getName());

     }

 }

public class TwoThreadsTest {

     public static void main (String[] args) {

         new SimpleThread("Go to Beijing??").start();

         new SimpleThread("Stay here!!").start();

      }

     }

  1. 编译、运行
  2. 请将程序的运行结果写在实验报告中。

(三)实现Runnable接口的方法实现多线程

    1. 程序功能:一个时钟Applet,它显示当前时间并逐秒进行更新
    2. 编写Clock.java 程序文件,源代码如下。

import java.awt.*;

 import java.applet.*; 

 import java.util.*;

 public class Clock extends Applet implements Runnable{

        Thread clockThread;

        public void start(){

               if(clockThread==null){

                      clockThread=new Thread(this,"Clock");

                      clockThread.start();

               }

        }

        public void run(){

               while(clockThread !=null){

                      repaint();

                      try{

                             clockThread.sleep(1000);

                      }catch(InterruptedException e){}

                   }

        }

        public void paint(Graphics g){

                 Date now=new Date(); g.drawString(now.getHours()+";"+now.getMinutes()+";"+now.getSeconds(),5,10);

        }

        public void stop(){

               clockThread.stop();

               clockThread=null;

        }

     }

3.编译Clock.java 文件。

    

4.编写Clock.html 文件,源代码如下:
<HTML>

<HEAD>

<TITLE> A Simple Program </TITLE>

</HEAD>

<BODY>

Here is the output of my program:

<APPLET CODE="Clock.class" WIDTH=150 HEIGHT=25>

</APPLET> 

</BODY>

</HTML>

  1. 在浏览器中打开Clock.html 文件,将你看到的运行结果写在实验报告中。

(四)捕获并处理各种类型的异常

1.编写ExceptionTest.java 程序文件,源代码如下。
 import java.io.*;
 public class ExceptionTest{
        public static void main(String args[]) {
               for(int i = 0; i < 4;i++) {
                      int k;
                      try {
                            switch( i ) {
                                    case 0:        
                                           int zero = 0;
                                           k = 911 / zero;
                                           break;
                                    case 1:      
                                           int b[ ] = null;
                                           k = b[0];
                                           break;
                                    case 2:      
                                           int c[ ] = new int[2];
                                           k = c[9];
                                           break;
                                    case 3:      
                                           char ch = "abc".charAt(99);
                                           break;
                             }
                      }catch(Exception e) {
                             System.out.println("\nTestcase #" + i + "\n");
                             System.out.println(e);
                      }
               }
        }
 }

2. 编译、运行

3. 根据运行结果,请在实验报告中说明程序运行中总共捕捉了几个异常,并指出每个异常各自属于哪种类型的异常?

答:捕捉到四个异常。

Testcase #0

java.lang.ArithmeticException: / by zero  除数为0

Testcase #1

java.lang.NullPointerException  属于空指针异常

Testcase #2

java.lang.ArrayIndexOutOfBoundsException: 9   属于数组下标9越界异常

Testcase #3

java.lang.StringIndexOutOfBoundsException: String index out of range: 99  属于字符串异常

(五)了解异常处理模块中各个语句块的功能

1.编写TryTest.java 程序文件,源代码如下。

 import java.io.*; 
 public class TryTest{
        public TryTest(){                        
               try{
                      int a[] = new int[2];
                      a[4] = 3;
                      System.out.println("After handling exception return here?");
               }catch(IndexOutOfBoundsException e){
                      System.err.println("exception msg:" + e.getMessage());
                      System.err.println("exception string:" + e.toString());
                      e.printStackTrace();
               }finally{
                      System.out.println("-------------------");
                      System.out.println("finally");
               }
               System.out.println("No exception?");
        }
        public static void main(String args[]){
               new TryTest();
        }
 } 

2. 编译、运行

3. 根据运行结果,将程序的运行结果写在实验报告中。

4. 请在实验报告中指出程序中的语句System.out.println("After handling exception return here?"); 有没有被执行?

 

(六)思考题

  1. 简述并区分程序、进程和线程三个概念。

答:①程序是为完成特定任务、用某种语言编写的一组指令的集合。指一段静态的代码。

②进程是程序的一次执行过程,是系统进行调度和资源分配的一个独立单位。

③线程是比进程更小的执行单位。

一个进程在其执行过程中,可以产生多个线程,形成多条执行线索。

每个线程也有它自身的产生、存在和消亡的过程,也是一个动态的概念。

一个线程有它自己的入口和出口,以及一个顺序执行的序列

线程不能独立存在,必须存在于进程中。

  1. 线程有哪几个基本的状态?Java中线程调度遵循何种原则?

答:线程的基本状态有新建、就绪、运行、阻塞、死亡。线程调度安照线程的优先级来调度线程的执行,具有高优先级的线程会在较低优先级的线程之前得到执行。同时线程的调度是抢先式的。

  1. 实现多线程可以用哪两种基本方法?将这两种方法进行比较。

答:第一种方法是通过实现Runnable接口实现,第二种方法是通过继承Thread类,

 

使用Runnable方式可以实现两条线程交替运行(注:不是绝对的交替),而用Thread无法实现。

  1. 异常是如何抛出、捕捉和处理的?

答:

  1. 异常处理机制有哪些好处?

答:通过异常处理,我们可以对用户在程序中的非法输入进行控制和提示,以防程序崩溃。

实验七:多线程与异常处理 一、实验目的:了解线程的概念、线程的生命周期,掌握多线程的编程。掌握异常的概念以及如何定义、抛出和捕捉处理异常。 二、实验环境:Java SE 三、实验内容:(一)Thread子类的方法实现多线程 运行截图如下: (二)实现Runnable接口的方法实现多线程 运行结果如下: (三)捕获并处理各种类型的异常 运行结果如下: 答:捕捉到四个异常。 1.java.lang.ArithmeticE... 阅读详情

相关推荐

兰州大学Java实验教学资源与实践

Java是一种高级的面向对象的编程语言,它强调跨平台性,即“一次编写,到处运行”的特性。Java设计初衷是为了实现一种能适应各种环境的计算机语言。其跨平台的能力来源于Java虚拟机(JVM),这使得Java程序能够在安装了相应JVM的不同操作系统上运行,无需修改代码。在某些情况下,标准的Java异常类可能无法充分描述特定的问题,此时开发人员可以自定义异常类来表示特定的错误情况。自定义异常通常继承自Exception类(受检异常)或者。

weixin_35006125的博客 635

Java高级应用

一、异常处理 二、多线程

qq_55928086的博客 466

从原理图到代码:深入解析SX1278 LoRa模块与STM32的SPI通信驱动(附完整工程)

本文深入解析了SX1278 LoRa模块与STM32的SPI通信驱动实现,从硬件原理图到完整工程代码,详细介绍了LoRa技术的通信原理、寄存器配置、SPI接口设计及低功耗优化策略。适合物联网开发者和嵌入式工程师提升远距离无线通信能力,附完整工程代码助力快速开发。

weixin_42715608的博客 425

Java练习:实验九(异常与多线程)

1.编写一个程序,在其中写一个随机数发生类,它能生成0-100之间的随机整数,在主方法中使用随机数发生类对象生成一些随机数,要求当生成的随机数大于60时定义一个用户定义异常类对象并抛出该对象。 package javaExp9; import java.util.Random; public class RandomCatch { int RandomNum; public RandomCatch() { RandomNum=new Random().nextInt(100); } pu

Dtruth的博客 466

OV5640摄像头DVP与MIPI接口配置实战:从30Hz到60Hz的性能优化指南

本文详细解析了OV5640摄像头在DVP与MIPI接口下的60Hz性能优化方法,重点解决720p分辨率下帧率仅30Hz的常见问题。通过精确配置时钟树、传感器寄存器和接口参数,提供DVP与MIPI接口的实战配置代码,并分享调试工具与性能验证技巧,帮助开发者实现稳定的60fps输出。

weixin_29223603的博客 1301

数据服务:数据服务框架Magic-API 介绍及实践

接口快速开发框架 基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口,无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象即可完成常见的HTTP API接口开发 。在线页面快速开发平台 基于 vue 的在线页面快速开发平台,主要把所有的 vue 代码都改为在线配置,最终获得一个 json 格式的页面新一代爬虫平台 基于Java实现的新一代爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。今天给大家安利一

GIS摆渡人 2063

JAVA-异常与多线程

第一节 异常 1.1 异常概念与体系 异常:指的是程序在执行过程中,出现的非正常情况,最终会导致JVM的非正常停止 在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象 java处理异常的方式时中断处理 异常机制其实是帮助我们找到程序中的问题,异常的根类是java.lang.Throwable 其下有两个子类: java.lang.Error java.lang.Exception java.lang.Throwable:类是java语言中所有错误或异常的超类 E

xiaosongshi的博客 351

Go游戏服务器开发的一些思考(一):语言层面

Go是比C++更好用的高级语言使用Go作为服务器开发的主语言前,首先需要对Go语言做下定性。在接触Go前,可能给人的印象(至少是我),Go是一门脚本语言。看了 官方文档 ,才知道Go是一门高级语言。与C++相比,它有以下优势: 面向接口的编程没有C++复杂的面向对象语法,如类、继承、多态、虚函数等等。Go中只有结构与接口,从语言层面上,直接指导功能与功能间的解耦。直接且语法简单 提供语言反射机制提供

范安崇的博客 9560

Java面向对象与多线程综合实验(二)之 异常处理

理解异常的基本概念;了解Java异常的层次结构;熟悉并掌握Java异常的捕获处理方法。 (1)阅读Java™ Platform, Standard Edition 8 API Specification文档,了解后续编程中将要处理的IOException及其子类FileNotFoundException、EOFException,SocketException,SQLException以及运行时异...

有机盐的博客 2559

uniapp [全端兼容] - 实现全景图Vr 720°全景效果查看预览功能,3D全景图流畅不卡顿渲染+手势拖拽+悬浮工具按钮,uniAPP实现vr看720度全景效果示例代码(H5小程序APP全兼容)

uniapp显示720度全景图,720°全景图显示,在h5中展示720°全景图,浏览全景图,基于uniApp实现vr全景预览,加载全景图,uni-app全景预览插件,UNI-APP实现3D全景图,实现720°全景图展示,uniapp全景视频播放,uniapp项目实现vr720度全景图片预览,在网页上展示760全景图片和视频,全景图场景切换,UNIAPP全景VR图,uniapp加载720全景图_uniapp怎么加载vr图片,uniapp实现vr全景看房,uni-app实现全景效果,加载很慢卡怎么办,实现全景预

🏆 前端领域优质创作者 1万+

① Django手把手从零开发个人博客-前言

手把手教你从零开始玩转手把手教你从零开始玩转Django,全面学习并了解django的运行机制、开发全流程及线上部署。Django,全面学习并了解django的运行机制、开发全流程及线上部署。 专栏介绍 本套教程遵循Django的设计思想,开门见山,快速切入主题,拒绝拖沓,在实战中学习每一个知识点,提高学习的趣味性以及个人成就感,并且能快速将所学运用到实际项目中。 将从零手把手带着你一步步完成博客的每一个功能,通过实现博客文章列表页、文章详情页、作者页面等功能来学习和了解django的视图查询模块相关知.

轻编程的博客 515

java 第八次实验:多线程与异常处理

一、实验目的:    了解线程的概念、线程的生命周期,掌握多线程的编程。掌握异常的概念以及如何定义、抛出和捕捉处理异常。 二、实验环境:    Eclipse 三、实验内容:(一)Thread子类的方法实现多线程 编写 TwoThreadsTest.java 程序文件,源代码如下:class SimpleThread extends Thread { public SimpleThrea...

qq_40956679的博客 1284

自主探索型AI Agent:LLM驱动的好奇心与学习动机

随着人工智能技术的飞速发展,传统的AI系统往往依赖于预设的规则和大量的标注数据,其自主学习和适应新环境的能力有限。自主探索型AI Agent旨在打破这种局限,能够在复杂、未知的环境中自主地进行探索、学习和决策。本文的目的是深入研究在大语言模型(LLM)驱动下,AI Agent如何产生好奇心和学习动机,以及如何实现自主探索的能力。范围涵盖了核心概念、算法原理、数学模型、项目实战、应用场景等多个方面,为读者提供一个全面的技术视角。本文将按照以下结构进行阐述:首先介绍相关背景知识,包括目的、读者和文档结构;

大模型应用工坊 997

Java实验报告及内容参考[待完成]

《面向对象程序设计(Java)》 实验指导书 成都信息工程大学软件工程学院 2019年8月 文章目录《面向对象程序设计(Java)》 实验指导书前 言一、 课程目标二、 实验目的三、 实验基本内容四、 环境准备五、 实验任务及时间安排六、 实验评分(互评)标准实验1:Java程序的编写、编译与运行一、 实验目的二、 实验要求三、 实验设备与环境四、 实验内容及指导五、 注意事项 前 言 一、 课程目标 课程目标1:能够基于Java语言的特点、Java程序的开发过程、处理流程、Java程序运行环境、开

weixin_45848211的博客 7066

YOLOv8【第十二章:数据增强与数据工程篇·第10节】主动学习(Active Learning):如何挑选最有价值的样本进行标注!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 509

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Java程序设计以及实验指导 实验笔记

实验笔记 目录 实验笔记 一、实验操作 二、遇到的问题及解决方法 三、小结 第二章 Java编程基础 一、实验操作 二、遇到的问题及解决方法 三、小结 第三章 类与对象 一、实验操作 二、遇到的问题及解决方法 三、小结 第四章 继承与多态性 一、实验操作 二、遇到的问题及解决办法 三、小结 第五章 异常处理 一、实验操作 二、遇到的问题及解决方法 三、小结 第六章 Java常用类 一、实验操作 二、遇到的问题及解决办法 三、小结 第七章 泛型与集合 一、

小星博博的博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

郑州轻工业大学实验题整合

轻工业大学实验题整合 包含c语言,java等,正在持续更新中!

木心Fx的博客 3730

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java语言程序设计实验题集锦☞ 头歌平台

鄙人普通本科计算机在读学生一枚,第一次写这种文章有点小紧张,初衷当然是记录一下,未来也希望是越来越好。 最近正值暑假突然想回忆一下之前学的java,就把之前学校课程java实验课做的一些题搬上来了,希望也能给做到这些题不知道怎么下手的uu一些帮助。

m0_62232851的博客 1万+

java 实验报告模板_java实验报告模板

java实验报告模板1 / 26java 实验报告模板河南工业大学实验报告课程 Java 程序设计 _ 实验名称 一、Java 程序流程控制 院 系____ ____ 专业班级__ _________ 姓 名_______________ 学 号____________ _ 指导老师: 日 期一.实验目的熟悉 Java 语言中的数据类型、变量声明、流程控制语句。二.实验要求每个人独立完成程序的调试...

weixin_36325338的博客 2400

java事件处理程序实验报告,java异常处理程序,实验报告.docx

java异常处理程序,实验报告实验报告  课程名称:Java语言程序设计  院:管理学院  专业班级:  姓名:  学号:  指导教师:  XX年6月7日  《Java语言程序设计》上机实验报告  一、实验目的  1.熟悉异常处理原理和程序结构;  2.掌握异常处理程序设计技术并能正确应用。  二、实验内容  算术异常ArithmeticException处理程序设计与调试。  三、实验硬件、软件...

weixin_42524395的博客 517

java程序设计基础实验指导实验27_Java程序设计基础(第6版)实验指导与习题解答...

第一部分实验指导第1章Java语言概述实验1.1Java语言开发环境的配置实验1.2编译与运行Java应用程序第2章基本数据类型实验2.1基本数据类型的使用实验2.2取模运算与自增、自减运算实验2.3整数与浮点数的除法与强制类型转换实验2.4逻辑运算符实验2.5字符串与数值型数据的转换实验2.6从键盘输入数据第2章实验参考答案第3章结构语句实验3.1if条件语句及应用实验3.2switch语句及应...

weixin_35588980的博客 862

java编写程序上机实验,《Java程序设计》上机实验

《《Java程序设计》上机实验》由会员分享,可在线阅读,更多相关《《Java程序设计》上机实验(19页珍藏版)》请在技术文库上搜索。1、tor的安装及使用(2) 熟悉Java Application和Applet程序的结构及开发步骤(3) 熟练掌握if语句的使用(4) 掌握Math.sqrt()等常用数学函数的用法(5) 熟悉System.out.print()的用法实验内容及要求按Java Ap...

weixin_28938171的博客 1135

java实验报告遇到的问题,JAVA实验报告_doc

目录实验1 Java语言基础实验2 数组和字符串编程实验3 Java面向对象程序设计实验4 Java异常处理实验5 多线程编程实验6 图形用户界面编程实验7 输入与输出实验8 网络编程实验9 数据库编程实验1 Java语言基础一、实验目的和要求1.实验目的通过实验,掌握Java语言程序设计的基本方法。学会Java语言中标示符的命名、运算符和表达式的应用。熟练地掌握Java程序流程控制语句的应用。2...

weixin_33751984的博客 2953

java程序设计基础(第3版)实验指导_Java程序设计基础实验指导(第4版)

第1章Java语言概述实验1Java语言开发环境的配置实验2编译与运行Java应用程序实验3编译与运行Java小程序第2章基本数据类型实验4基本数据类型的使用实验5算术运算符1实验6算术运算符2实验7逻辑运算符实验8字符串与数值型数据的转换实验9从键盘输入数据第3章结构语句实验10if条件语句实验11for循环语句实验12while循环语句实验13do?while语...

weixin_39693101的博客 285
上一篇: Fibonacci数列计算时间
下一篇: 蛮力法求解最近点对问题
attack_5
博客等级 码龄9年 273粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值