网络编程技术次课多线程代码_第1页
网络编程技术次课多线程代码_第2页
网络编程技术次课多线程代码_第3页
免费预览已结束,剩余6页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1) 第一个程序:LeftA ndRight.javapublic class LeftA ndRight public static voidmain( Stri ng args) Lefthand left;/声明线程类对象Rightha nd right;left = new Leftha nd();/ 新建线程。right = new Rightha nd();left.start();/线程开始运行后,Lefthand类中的run方法将被执行。right.start();for ( int i = 0; i <= 6; i+) System. out .println(&quo

2、t;我是主线程");class Leftha ndexte ndsThread public void run() for (int i = 1; i <= 9; i+) System. out .println("我是左手线程");try /线程执行一次输岀后,休眠500ms (毫秒),使自己放弃CPU资源,/500ms时间到后,重新排队等待 CPU的调度sleep (500); catch(InterruptedException e) /如果线程在休眠期被打断,将抛岀 InterruptedException,/所以sleep方法需要在try catc

3、h语句块中被调用class Rightha nd exte ndsThread public voidrun() for (int i = 1; i <= 5; i+) System. out .println("我是右手线程");try sleep (300); catch(InterruptedException e) 2) 第二个程序: StudentAndTeacher.java public class Stude ntAn dTeacher /* 两个线程共享一个对象ComputerSumsum,在运行的过程中修改这个对象的成员变量sum*为了使结果尽量不

4、依赖于当前CPU资源的使用情况,应当让线程主动调用sleep方法,让岀CPU的控制权进入中断状态矚慫润厲钐瘗睞枥庑赖。*/public static void main(String args) /TODO Auto-generated method stubComputerSum sum =People teacher =People student = teacher.start(); student.start();new ComputerSum();new People( " 教师" , 100, sum); new People( " 学生"

5、, 100, sum);class ComputerSum / 线程共享的对象类 ComputerSum ,其中定义了一个数据成员 sum int sum =0;public void setSum( int n) sum = n;public int getSum() return sum;class People extends Thread /类People 是Thread 的子类 ComputerSum computerSumint timeLength;People(String s,int timeLength, ComputerSum sum) / 构造方法 聞創沟燴鐺險爱氇谴净

6、。setName(s);/设置 Thread 的名称this . timeLength= timeLength;/ 设置休眠时间this . computerSum = sum; / 设置 ComputerSum 类的对象 sumpublic void run() / 重写 Thread 父类的 run() 方法for ( int i = 1; i <= 5; i+) int m = computerSum .getSum(); / 取岀 computerSum 对象中的数据成员 sum 残骛楼諍锩瀨濟溆塹籟。computerSum .setSum(m+1); / 将数据成员 sum 的

7、值加 1System. out .println( " 我是 " + getName() +" ,现在的和是 " +computerSum .getSum(); 酽锕极額閉镇桧猪訣锥。/ 输岀当前处于运行中的线程的信息try sleep ( timeLength ); / 线程休眠 timeLength 毫秒 catch (InterruptedException e) 3) 第三个程序: Stude ntAn dTeacher1.javapublic class Stude ntAn dTeacher1 /* StudentAndTeacher1为 S

8、tude ntAn dTeacher的改进版本*/public static void main( Stri ng args) /TODO Auto-ge nerated method stubComputerSum sum = People1 people = people. teacher people.stude ntnew ComputerSum(); new People1(200, sum); .start();.start();class/intComputerSum1 线程共享的对象类sum = 0;ComputerSum ,其中定义了一个数据成员sumpublicvoid s

9、etSum( int n) sum = n;public int getSum() return sum;class People1 impleme nts Runn able / 类People是Thread 的子类ComputerSum computerSum ;int timeLe ngthThread teacher , stude ntPeople1( inttimeLe ngth, ComputerSum sum) /构造方法teacher=new Thread( this ); / 类 People1实现了接口 Runnableteacher.setName("教师“)

10、;stude nt=new Thread( this );stude nt.setName("学生");this . timeLength = timeLength;/设置休眠时间this . computerSum = sum; / 设置 ComputerSum 类的对象 sumpublicsyn chr oni zedvoid computer(Thread thread) sum謀荞抟int m = computerSum .getSum(); / 取岀 computerSum 对象中的数据成员 彈贸摄尔霁毙攬砖卤庑。computerSum .setSum(m + 1

11、);/ 将数据成员 sum 的值加 1System. out .println( "我是"+ thread.getName() +",现在的和是"箧飆鐸怼类蒋薔。+ computerSum .getSum();public void run() / 重写 Thread 父类的 run() 方法for (int i = 1; i <= 5; i+) if (Thread.curre ntThread() = teacher ) computer(teacher); else if (Thread.currentThread() =student) c

12、omputer(stude nt);try Thread. sleep (timeLength); / 线程休眠 timeLength毫秒 catch(InterruptedException e) 4) 第四个程序:GuessNumberGame.iava负责随机给岀1-100之间的一个整数 负责猜出这个数猜大了 ”,猜小了 ”,猜对了 ”*/*猜数程序第一个线程 givenNumberThread 第二个线程 guessNumberThread 每当第二个线程给出自己的猜测后 第一个线程会将其比较后,提示public class GuessNumberGame public static

13、void main( Stri ng args) GuessNumber gn =new GuessNumber();gn. give nN umberThread.start();/启动线程gn. guessNumberThread.start();class GuessNumberimpleme ntsRunn able int realNumber , guessNumber , min = 0, max = 100, message ; 厦礴恳蹒骈時盡 继價骚。/realNumber: 随机数; guessNumber :某次猜得的数; message :提示信息 final int

14、SMALLER = -1, LARGER = 1,SUCCESS = 8;Thread guessNumberThread , givenNumberThread ;/guessNumberThread :线程,给出随机整数并判定线程 givenNumberThread 猜得的 数字是否正确 茕桢广鳓鯡选块网羈泪。GuessNumber() guessNumberThread= new Thread( this );givenNumberThread= new Thread( this );public void run() for ( int i = 1;true ; i+) if (Thr

15、ead. currentThread () = givenNumberThread ) / 如果当前正在运行的线程是 givenNumberThreadif (i = 1) /givenNumberThread 线程第一次运行时,给出一个随机数realNumber = ( int ) (Math.random () * 100) + 1;System. out .println( " 给你一个随机数,猜猜是多少? realNumber="+ realNumber ); 鹅娅尽損鹌惨歷茏鴛賴。 else /* 比较 guessNumber 和 realNumber 并向猜数线

16、程 guessNumberThreadif( guessNumber > realNumber messageSystem.的大小,传递猜大了或猜小了等信息 */) / 猜得的数偏大LARGER;out .println(else if ( messageguessNumber = SMALLER;" 您猜的数偏大 " );< realNumber ) / 猜得的数偏小out .println( guessNumber" 您猜的数偏小 " ); = realNumberSystem.else if (/ 猜对了, guessNumber =

17、realNumberSUCCESS;message" );运行结束,返回CPU资源给其他线程System. out .println( " 恭喜,您猜对了! return ; / 猜对了, givenNumberThread / else try Thread. sleep (1500); / 休眠 1000 毫秒,让出 catch (InterruptedException e) / ifif (Thread. currentThread () = guessNumberThread ) /如果当前正在运行的线程是guessNumberThreadif (i = 1) /

18、*本例中是一个带滚动字幕的小时钟,在文本框中显示系统当前时间,*滚动的字幕在单击 加速”键后,会加速字幕的滚动速度;单击停止后,会停止滚动 单击”开始后,文字会重新开始滚动 guessNumberThread线程第一次运行时,guessNumber = (min + max) / 2=( 0+100 ) /2=50后面guessNumberThread采用 折半”查找的原理根据每次从guessNumberThread那里得到的提示信息,修改max或min的值,给岀新的 guessNumber 的取值*/ guessNumber = ( min + max) / 2;System. out .p

19、rintln("我猜这个数是"+ guessNumber ); else if ( message = SMALLER) min = guessNumber ;guessNumber = ( min + max) / 2;System. out .println("我猜这个数是"+ guessNumber ); else if ( message = LARGER) max = guessNumber返回guessNumber=(min + max) / 2;System. out .println( else if ( message ="我

20、猜这个数是"+ guessNumberSUCCESS) );/根据message得知猜对了, guessNumberThread运行结束,System. out .println( "我成功了! !");return ; / elsetry Thread. sleep (1500);/休眠1000毫秒,让岀CPU资源给其他线程 catch(InterruptedException e) / if5) 第五个程序 GuessNumberGame1.java代码略。6) 第六个程序 ScrollWordsAndTimer.iava*/public class Scro

21、llWordsAndTimer public static void main(String args) new SrollingAndTimerFrame();class SrollingAndTimerFrame extends JFrame implements Runnable, ActionListener 籟丛妈羥为贍偾蛏练淨。JButton fastWordsBtn , stopWordsBtn , startWordsBtn , startTimerBtn 預頌圣鉉儐歲龈讶骅籴。stopTimerBtn ; / 加速滚动文字,停止滚动文字,(重新)开始滚动文字,开 始显示时间,

22、停止显示时间 渗釤呛俨匀谔鱉调硯錦。JLabel labelOfScrollWordsl/fiji*, labelOfBlank, labelOfTimer; 铙誅卧泻噦圣骋贶頂廡。Thread scrollWordsThread, timerThread; / 滚动文字线程,显示时钟线程 擁締凤袜备訊顎轮烂蔷。/ JTextArea textOfTime;JTextField textOfTime; / 显示时钟的文本框boolean stopScrolling, stopTimer ; /是否停止滚动标志位,是否停止显示系统时间标志位 贓熱俣阃歲匱阊邺镓騷。setTitle("

23、一个带滚动字幕的小字典 " );setLayout(new FlowLayout();fastWordsBtn= new JButton(" 加速滚动 " );startWordsBtn= new JButton(" 开始滚动 " );startWordsBtn.setEnabled( false );stopWordsBtn= new JButton(" 停止滚动 " );startTimerBtn= new JButton(" 开始显示时间 " );stopTimerBtn= new JButton(

24、" 停止显示时间 " );fastWordsBtn.addActionListener(this ); / 注册事件监视器startWordsBtn.addActionListener(this );stopWordsBtn.addActionListener(this );stopTimerBtn.addActionListener(this );startTimerBtn.addActionListener(this );textOfTime= new JTextField(10);labelOfBlank= new JLabel( "I!蒌鍥铃氈淚。JPan

25、el jp1 =new JPanel();SrollingAndTimerFrame() ); 坛摶乡囂忏jp1.add( textOfTime );jp1.add( startTimerBtn );jp1.add( stopTimerBtn ); add(jp1);JPanel jp2 = new JPanel();jp2.add( labelOfBlank );jp2.add(fastWordsBtn);jp2.add( startWordsBtn );jp2.add(stopWordsBtn);add(jp2);labelOfScrollWords= new JLabel(欢迎使用本系统

26、! " );/ JLabel ,负责滚动文字的显示add( labelOfScrollWords );scrollWordsThread= new Thread(this ); / 创建线程timerThread = new Thread( setBounds(100, 100, 420, 200); setVisible( true ); validate();setDefaultCloseOperation(JFrame. scrollWordsThread .start();this );EXIT_ON_CLOSE );/ 启动滚动文字线程public void run() i

27、f() =(Thread. currentThread/ 如果当前正在运行中的线程是 while ( true ) int x = labelOfScrollWordsscrollWordsThreadscrollWordsThread.getBounds().x;int y = 120;x += 5; / 水平坐标 labelOfScrollWords.setLocation(x, y);将滚动文字移动到新位置(x > 380) x = 10;labelOfScrollWords/if.setLocation(x, y);scrollWordsThread try. sleep (10

28、00); catch (InterruptedException ex) 结束返回if ( stopScrolling = true ) / 如果单击了 ”停止滚动 “按钮,线程 scrollWordsThread return ;else if (Thread. currentThread () = timerThread ) / 如果当前正在运行中的线程是 timerThread while ( true ) Date date =new Date();String str = date.toString().substring(11, 19);/ 把 date 中的時間提取出来textOfTime .setText(str); / 把时间显示在文本框中 try Thread. sleep (1000); / 休眠 1000 毫秒 catch (InterruptedException ex) if ( stopTimer = true ) return ; / 如果单击了停止显示

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论