java多线程实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Java实验程序设计实验报告实验名称:多线程一:实验目的1、掌握线程和多线程的概念。2、掌握创建线程的两种方法及其区别。3、了解线程的启动、终止、同步、互斥和优先级等概念。二:实验内容1、编写一个程序,其功能是运行之后,其中有一个线程可以输出20次你的学号,另一个线程会输出20次你的姓名。2、编写一个图形界面程序,运行之后,让其中有一个线程能在界面上“实时”显示系统当前时间(精确到秒获取时间可查询java.util.Calendar类,它包含了多个用于获得系统时间的函数)。另让一个线程可以在界面上提示当前系统时间下用户该做什么工作(例如当程序判断出系统时间现在是8:00到9:00,则提示用户该上课;现在是23:00到8:00,则提示用户该休息。具体测试时可以将时间段限制到秒级,以便及时查看到程序运行中提示信息的变化)。三:实验设计四:实验测试及运行结果实验一;20次输出姓名,学号实验二:一个界面的左边显示当时时间,显示的时间会随时间的改变而改变,右边显示某个时间段该干什么,比如该睡觉,该上课,该自习。五:问题与总结通过这次实验学会了怎么使用多线程。六:附录packageshiyan6_1;classMyThreadimplementsRunnable{publicMyThread(){//构造函数的代码,根据需要来写}publicvoidrun(){for(inti=1;i=20;i++){System.out.println(第+i+次执行线程+Thread.currentThread().getName());try{Thread.currentThread().sleep(500);//睡眠500ms}catch(InterruptedExceptione){}}}publicstaticvoidmain(Stringargs[]){Threadt1=newThread(newMyThread(),学号);//创建线程1的对象,并//通过第二个参数将其命名为thread1Threadt2=newThread(newMyThread(),姓名);//创建线程2的对象,并//通过第二个参数将其命名为thread2t1.start();//启动两个线程运行t2.start();//虽然t2的启动表面上好像在后面,实际上两个线程的执行并无先后之分,}}实验二:packageshiyan6_2;importjava.awt.FlowLayout;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjavax.swing.JFrame;importjavax.swing.JTextArea;publicclassMyThread{JFramejf=newJFrame(线程都往界面上显示内容的例子);staticJTextAreajta1,jta2;Threadtrda=newthread1();//线程trdaThreadtrdb=newthread2();//线程trdbpublicMyThread()//构造函数,生成图形界面{//setBounds(100,100,500,200);jf.setLayout(newFlowLayout());jta1=newJTextArea(15,30);jta2=newJTextArea(15,30);jf.add(jta1);jf.add(jta2);//将2个组件添加到界面上jf.setLocation(100,150);jf.setVisible(true);jf.pack();trda.start();//两个线程都启动trdb.start();}publicstaticvoidmain(Stringargs[]){MyThreadfrm=newMyThread();}}classthread1extendsThread//线程类thread1{publicvoidrun(){inty,m,d,h,mi,s;while(true){Calendarcal=Calendar.getInstance();//获取一个Calendar类的实例对象y=cal.get(Calendar.YEAR);//获取年份m=cal.get(Calendar.MONTH)+1;//获取月份,获取的月份是从0到11表示一到十二月d=cal.get(Calendar.DATE);//获取日期h=cal.get(Calendar.HOUR_OF_DAY);//获取小时mi=cal.get(Calendar.MINUTE);//获取分钟s=cal.get(Calendar.SECOND);//获取秒钟Strings1=Integer.toString(y);Strings2=Integer.toString(m);Strings3=Integer.toString(d);Strings4=Integer.toString(h);Strings5=Integer.toString(mi);Strings6=Integer.toString(s);MyThread.jta1.setText(s1+年+s2+月+s3+日+s4+时+s5+分+s6+秒);}}}classthread2extendsThread//线程类thread2{publicvoidrun(){Calendarcal=Calendar.getInstance();inthour=cal.get(Calendar.HOUR_OF_DAY);//获取小时intminute=cal.get(Calendar.MINUTE);//获取分钟if(hour23||hour7){MyThread.jta2.append(睡觉时间);}elseif(hour7&&hour17){MyThread.jta2.append(上课时间);}elseif(hour17&&hour23){MyThread.jta2.append(自习时间);}}}

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功