实验五 多线程程序设计(汽院含答案)(6)

2020-04-14 01:03

框 textArea.setEditable(false);// 设置不可被编辑 getContentPane().add(textArea, BorderLayout.CENTER);// 添加文本域组件到文本 startBtn=new JButton(\开始\); pauseBtn=new JButton(\暂停\); resumeBtn=new JButton(\恢复\); startBtn.addActionListener(this); pauseBtn.addActionListener(this); resumeBtn.addActionListener(this); JPanel panel=new JPanel(); panel.add(startBtn); panel.add(pauseBtn); panel.add(resumeBtn); getContentPane().add(panel,BorderLayout.SOUTH); setBounds(100, 100, 383, 225); // 设置窗体大小位置 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); // 显示窗体 //setLocationRelativeTo(null);//在屏幕中央显示 } //Runnable接口方法,是线程的执行方法 @Override public void run() { String[] intros = introduction.split(\); // 将字符串分割为数组 for (String ch : intros) { // ForEach遍历字符串数组 synchronized (this) { while(allow){ } } try{ wait(); }catch(InterruptedException e){ e.printStackTrace(); } textArea.append(ch); // 添加一个字符到文本域 try { Thread.sleep(100);//【补充代码】 // 线程休眠0.1秒 } catch (InterruptedException e) { e.printStackTrace(); } } startBtn.setEnabled(true); } public static void main(String args[]) { new RunnableDemo(); // 创建本类实例对象 } @Override public void actionPerformed(ActionEvent e) { if(e.getSource()==startBtn){ textArea.setText(\); Thread thread = new Thread(this);//【补充代码】 //创建thread线程,当前窗口做为该线程的目标对象 thread.start();//【补充代码】 //启动thread线程 startBtn.setEnabled(false); }else if(e.getSource()==pauseBtn){ allow=true; }else if(e.getSource()==resumeBtn){ allow=false; synchronized(this){ notifyAll(); } } } }

实验总结

请书写你对本次实验有哪些实质性的收获和体会,以及对本次实验有何良好的建议?

参考文献:

1. 《Java2实用教程(第三版)》耿祥义、张跃平编著,清华大学出版社。

2.《Java2实用教程(第三版)实验指导与习题解答》耿祥义、张跃平编著,清华大学出版社。 3.《Java开发实战宝典》,李钟尉等编著,清华大学出版社。

附录一 Java Code之多态

通过一个简单的例子理解多态的概念 /**

* 人民警察 */

public interface IPolice { /**

* 抓小偷 */

public void catchThief(); }

/**

* 一个警察,执行抓小偷任务. */

public class PoliceReal implements IPolice { public void catchThief() {

System.out.println(\抓住小偷了\); } } /**

* 另一个警察,也执行抓小偷任务. */

public class PoliceHyp implements IPolice { public void catchThief() {

System.out.println(\大冷天的抓什么小偷啊,不如偷个菜.\); } } /** * 市民 */

public class Citizen { private String mName;

public Citizen(String name) { mName = name; } /**

* 市民报案 */

public void report(IPolice police) {

System.out.println(String.format(\市民%s丢失手机,向警察报案抓小偷.\, mName));

police.catchThief(); } }

案情:

市民虽然向警察报了案,

但你不知道能不能把小偷抓住,

甚至你都不知道他们有没有去抓小偷,

还有可能你在电影里看到的剧情真的发生了... 事情经过可能是这样: public class Main {

public static void main(String[] args) { Citizen citizen = new Citizen(\张三\); IPolice police = getPolice(); citizen.report(police); }

private static IPolice getPolice() { return new PoliceReal(); } }

事情结果一:

市民张三丢失手机,向警察报案抓小偷. 抓住小偷了

事情经过也可能是这样: public class Main {

public static void main(String[] args) { Citizen citizen = new Citizen(\张三\); IPolice police = getPolice(); citizen.report(police); }

private static IPolice getPolice() { return new PoliceHyp(); } }

事情结果二:

市民张三丢失手机,向警察报案抓小偷. 大冷天的抓什么小偷啊,不如偷个菜.

事情经过还可能是这样: public class Main {

public static void main(String[] args) { Citizen citizen = new Citizen(\张三\);


实验五 多线程程序设计(汽院含答案)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:stm32移植rt-thread

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: