收藏 分享(赏)

24李后浪实验五 多线程.doc

上传人:fmgc7290 文档编号:4572835 上传时间:2019-01-02 格式:DOC 页数:6 大小:76KB
下载 相关 举报
24李后浪实验五 多线程.doc_第1页
第1页 / 共6页
24李后浪实验五 多线程.doc_第2页
第2页 / 共6页
24李后浪实验五 多线程.doc_第3页
第3页 / 共6页
24李后浪实验五 多线程.doc_第4页
第4页 / 共6页
24李后浪实验五 多线程.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、实验五 多线程实验课程名:Java 程序设计专业班级: 12 网工 2 班 学号: 201240420224 姓名: 李后浪 实验时间: 2014.6.6 实验地点: K4-307 指导教师: 冯 珊 一、实验目的和要求掌握使用Thread的子类创建线程;学习使用Thread类创建线程;学习处理线程同步问题。二、实验内容任务1 汉字打字练习。 实验要求:编写一个Java应用程序,在主线程中再创建一个Frame类型的窗口,在该窗口中再创建1个线程giveWord。线程giveWord每隔2秒钟给出一个汉字,用户使用一种汉字输入法将该汉字输入到文本框中。1、 源代码:WordThread.java

2、import java.awt.*;public class WordThread extends Thread char word;int k=19968;Label com; WordThread(Label com) =com; public void run() k=19968;while(true)word=(char)k;com.setText(“+word);try Thread.sleep(6000);/调用sleep方法使得线程中断6000豪秒catch(InterruptedException e)k+;if(k=29968) k=19968; ThreadFrame.ja

3、vaimport java.awt.*;import java.awt.event.*;public class ThreadFrame extends Frame implements ActionListenerLabel wordLabel;Button button;TextField inputText,scoreText;WordThread giveWord;/用WordThread声明一个 giveWord对象 int score=0;ThreadFrame() wordLabel=new Label(“ “,Label.CENTER);wordLabel.setFont(ne

4、w Font(“,Font.BOLD,72);button=new Button(“开始“);inputText=new TextField(3);scoreText=new TextField(5);scoreText.setEditable(false); giveWord=new WordThread(wordLabel);/创建giveWord ,将wordLabel 传递给WordThread 构造方法的参数button.addActionListener(this);inputText.addActionListener(this);add(button,BorderLayout.

5、NORTH);add(wordLabel,BorderLayout.CENTER);Panel southP=new Panel();southP.add(new Label(“输入标签所显示的汉字后回车:“ );southP.add(inputText);southP.add(scoreText);add(southP,BorderLayout.SOUTH);setBounds(100,100,350,180);setVisible(true);validate();addWindowListener(new WindowAdapter() public void windowClosing

6、(WindowEvent e) System.exit(0);); public void actionPerformed(ActionEvent e)if(e.getSource()=button) if(!(giveWord.isAlive() /giveWord调用方法isAlive() giveWord=new WordThread(wordLabel);try giveWord.start();/giveWord调用方法start()catch(Exception exe)else if(e.getSource()=inputText) if(inputText.getText().

7、equals(wordLabel.getText() score+=1000;scoreText.setText(“得分:“+score );inputText.setText(null);ThreadWordMainClass.javapublic class ThreadWordMainClass public static void main(String args) new ThreadFrame();2、运行结果:3、实验结果与分析:(明确地写出最后结果,并对自己得出的结果进行具体、定量的结果分析,说明其可靠性;杜绝只罗列不分析)在主线程中创建一个Frame类型的窗口,在该窗口中再创

8、建1个线程giveWord。线程giveWord每隔2秒钟给出一个汉字,用户使用一种汉字输入法将该汉字输入到文本框中。任务2 双线程接力。 实验要求:编写一个应用程序,除了主线程外,还有两个线程:first和second。first负责模拟一个红色的按钮从坐标(10,60)运动到(100,60);second负责模拟一个绿色的按钮从坐标(100,60)运动到(200,60)。1、 源代码:MoveButton.javaimport java.awt.*;import java.awt.event.*;public class MoveButton extends Frame implement

9、s Runnable,ActionListener Thread first,second;/用Thread 类声明first,second 两个线程对象Button redButton,greenButton,startButton;int distance=10;MoveButton() first=new Thread(this); /创建first线程,当前窗口做为该线程的目标对象second=new Thread(this); /创建second 线程,当前窗口做为该线程的目标对象redButton=new Button();greenButton=new Button();redB

10、utton.setBackground(Color.red);greenButton.setBackground(Color.green);startButton=new Button(“start“);startButton.addActionListener(this);setLayout(null);add(redButton);redButton.setBounds(10,60,15,15);add(greenButton);greenButton.setBounds(100,60,15,15);add(startButton);startButton.setBounds(10,100

11、,30,30);setBounds(0,0,300,200);setVisible(true);validate();addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0););public void actionPerformed(ActionEvent e) try first.start();second.start(); catch(Exception exp)public void run() while(true) if(Thread.currentT

12、hread()=first) /判断当前占有CPU 资源的线程是否是first moveComponent(redButton);try Thread.sleep(20);catch(Exception exp)if(Thread.currentThread()=second) /判断当前占有CPU 资源的线程是否是second moveComponent(greenButton);try Thread.sleep(10);catch(Exception exp) public synchronized void moveComponent(Component b)if(Thread.curr

13、entThread()=first) while(distance100notifyAll();if(Thread.currentThread()=second) while(distance=10b.setLocation(100,60);notifyAll();MoveButtonMainClass.javapublic class MoveButtonMainClass public static void main(String args) new MoveButton();2、运行结果:3、实验结果与分析:该应用程序,除了主线程外,还有两个线程:first和second。first负责模拟一个红色的按钮从坐标(10,60)运动到(100,60);second负责模拟一个绿色的按钮从坐标(100,60)运动到(200,60)。三、结论(写本次实验的收获)通过本次实验,我学习和掌握了以下这些内容:掌握了使用Thread的子类创建线程;学习了使用Thread类创建线程;学习了处理线程同步问题。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 中学实验

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报