资源描述:
《实验六 多线程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、桂林电子科技大学《Java应用开发》实验报告指导教师意见:教师签名成绩实验名称多线程计算机科学与工程学院计算机科学与技术专业班第实验小组姓名学号实验日期2015年11月14日实验六多线程一、实验目的1、掌握线程和多线程的概念。2、掌握创建线程的两种方法及其区别。3、了解线程的启动、终止、同步、互斥和优先级等概念。二、实验内容1、编写一个程序,其功能是运行之后,其中有一个线程可以输出20次你的学号,另一个线程会输出20次你的姓名。2、编写一个图形界面程序,运行之后,让其中有一个线程能在界面上“实时”显示系统当前时间(精确到秒获
2、取时间可查询java.util.Calendar类,它包含了多个用于获得系统时间的函数)。另让一个线程可以在界面上提示当前系统时间下用户该做什么工作(例如当程序判断出系统时间现在是8:00到9:00,则提示用户该上课;现在是23:00到8:00,则提示用户该休息。具体测试时可以将时间段限制到秒级,以便及时查看到程序运行中提示信息的变化)。三、分析与设计1.Threadt1=newThread(newNumber(),"学号:");//创建线程1的对象,并通过第二个参数将其命名为学号Threadt2=newThread(new
3、Name(),"姓名:");//创建线程2的对象,并通过第二个参数将其命名为姓名使用以下代码来实现第一个线程,第二个输出名字的线程代码类似。classNumberimplementsRunnable{publicvoidrun(){for(inti=1;i<=20;i++){System.out.println("第"+i+"次执行线程:"+Thread.currentThread().getName()+"1300310327");s6_1.j1.append("第"+i+"次执行线程"+Thread.currentT
4、hread().getName()+"1300310327");Thread.yield();//暂停当前正在执行的线程对象,并执行其他线程}}}2.使用一下代码或得系统时间inty,m,d,h,mi,s;Calendarcal=Calendar.getInstance();y=cal.get(Calendar.YEAR);m=cal.get(Calendar.MONTH)+1;d=cal.get(Calendar.DATE);h=cal.get(Calendar.HOUR_OF_DAY);mi=cal.get(Cale
5、ndar.MINUTE);s=cal.get(Calendar.SECOND);ifelse语句来输出当前时间和事件一、测试数据及运行结果多线程的运行结果:显示时间和事件:事件会随着时间的变化实时的显示在第二个线程哪里一、问题与总结创建线程有两种方法,一是声明一个类的同时实现Runnable接口,这个类必须实现一个没有参数的run方法,run方法中的代码即线程所要做的事情。一般操作系统中的多线程指的是在操作系统中同时运行几个应用程序,每个应用程序占用一个进程。实际上这些程序在单处理器的系统中并不是同时运行,而是操作系统将系统
6、资源分配给各个程序,每个程序在CPU中交替执行,由于CPU的速度比较快,我们就感觉不出各程序是交替执行,而感觉多个程序是同时运行的。for(inti=0;;i++)Calendarcal=Calendar.getInstance();//获得当前时间ints=cal.get(Calendar.SECOND);ifelse判断当前时间应该执行什么事件一、附录packagesy6;importjava.awt.FlowLayout;importjavax.swing.JFrame;importjavax.swing.JTextA
7、rea;publicclasss6_1extendsJFrame{JFramejf=newJFrame("学号姓名");staticJTextAreaj1,j2;Threadt1=newThread(newNumber(),"学号:");//创建线程1的对象,并通过第二个参数将其命名为学号Threadt2=newThread(newName(),"姓名:");//创建线程2的对象,并通过第二个参数将其命名为姓名publics6_1(){jf.setLayout(newFlowLayout());j1=newJTextArea
8、(40,15);j2=newJTextArea(40,15);jf.add(j1);jf.add(j2);//将2个组件添加到界面上jf.setLocation(200,150);jf.setVisible(true);jf.pack();jf.setDefaultCloseOperati