项目 |
内容 |
这个作业属于哪个课程 |
https://www.cnblogs.com/nwnu-daizh/ |
这个作业的要求在哪里 |
https://www.cnblogs.com/nwnu-daizh/p/12031970.html |
作业学习目标 |
(1) 掌握Java应用程序的打包操作; (2) 掌握线程概念; (3) 掌握线程创建的两种技术。 |
第一部分:总结教材14.1-14.3知识内容(20分)
多任务(multitasking):在同一刻运行多个程序的能力
通常,一个任务被称为一个线程(thread) 可以同时运行多个线程的程序称为多线程程序(multithreaded)。进程与线程不同。
控制线程的类: Thread
Thread(Runnable target) 构造一个新线程,用于调用给定目标的run()方法。
void sleep() 方法用于暂停 毫秒单位时间 当前线程。
void start() 启动当前线程,将引发调用run()方法。
interrupt 线程对象调用interrupt函数后,相当于添加了一个标记,线程执行的时候使用isInterruptted方法判断是否有标记,有则中断线程,无则继续执行
线程有 New(新创建),Runnable(可运行),Blocked(被阻塞),Wait(等待),Timed waiting(记时等待),Terminated(被终止) 六种状态。
第二部分:实验部分
实验1:测试程序1(10分)
package resource; import java.awt.*; import java.io.*; import java.net.*; import java.util.*; import javax.swing.*; /** * @version 1.41 2015-06-12 * @author Cay Horstmann */ public class ResourceTest { public static void main(String[] args) { EventQueue.invokeLater(() -> { JFrame frame = new ResourceTestFrame(); frame.setTitle("ResourceTest"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); }); } } /** * 一个加载图像和文本资源的框架。 */ class ResourceTestFrame extends JFrame { private static final int DEFAULT_WIDTH = 300; private static final int DEFAULT_HEIGHT = 300; public ResourceTestFrame() { setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); //在找到ResourceTest类的地方查找about.gif文件 URL aboutURL = getClass().getResource("about.gif"); //将此图像设置为框架的图标 Image img = new ImageIcon(aboutURL).getImage(); setIconImage(img); JTextArea textArea = new JTextArea(); //getResourceAsStream方法的作用是找到与类位于同一位置的资源,返回一个可以加载资源的URL或者输入流 InputStream stream = getClass().getResourceAsStream("about.txt"); //在读取文本时使用同一编码UTF-8 try (Scanner in = new Scanner(stream, "UTF-8")) { while (in.hasNext()) textArea.append(in.nextLine() + " "); } add(textArea); } }
实验1:测试程序2(10分)
实验1:测试程序3(10分)
前一个程序只在球运动了完整一圈后才能停止,也不能同时出现多个球,而后一个程序既能随时停止,也能同时出现多个球。
实验2:结对编程练习包含以下4部分:(该项17周实验课现场检查评分:30分)
1) 程序设计思路简述;
2) 符合编程规范的程序代码;
3) 程序运行功能界面截图;
实验总结:(15分)
这次的实验让我了解了部署java程序的方法 和 实现多线程程序的基本知识以及多线程程序相较单线程程序的优势。