《Java语言程序设计》Java中实现多线程有几种方式_第1页
《Java语言程序设计》Java中实现多线程有几种方式_第2页
《Java语言程序设计》Java中实现多线程有几种方式_第3页
《Java语言程序设计》Java中实现多线程有几种方式_第4页
《Java语言程序设计》Java中实现多线程有几种方式_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

《Java语言程序设计》Java中实现多线程有几种方式?第一套题一、简答题1什么是多态性?方法的重载和覆盖有何区别?阅读下列代码,指出其中存在的重载和覆盖,写出输出结果是什么?解释为什么这样输出?(15分)classC1{ publicvoidf(){ System.out.println("C1.f"); }}classC2extendsC1{ publicvoidf(){ System.out.println("C2.f"); }}classC3{ publicvoidg(C1one){ System.out.println("g(C1)"); one.f(); } publicvoidg(C2two){ System.out.println("g(C2)"); two.f(); }}publicclassMain1{ publicstaticvoidmain(String[]args){ C1one=newC2(); C3three=newC3(); three.g(one); }}(1)多态是同一个行为具有多个不同表现形式或形态的能力。(2)重载就是具有相同函数名,返回类型可以不同,参数个数、顺序、类型不同的函数覆盖就是父类的方法,和父类有相同返回类型,参数,甚至是抛出的异常输出:g(C1)C2.f第一个输出是C3方法publicvoidg(C1one),C2.f是因为多态,C1one=newC2();第二个输出是C2的publicvoidf()方法。2、请用自己的语言介绍throw/throws有什么联系和区别?在程序中应如何使用?另外谈谈final、finally的区别和作用,必须举例说明用法。(15分)throw抛出一个异常。需要自己捕获,并进行相应处理。throws是声明方法中可能抛出的所有异常(在声明方法处表示该方法可能要抛出异常),通常不显示的捕获异常,由系统自动将所有捕获的异常抛给上级方法;如:if(a!=b)

thrownewException3("自定义异常");

}publicvoidaaa(Stringa)throwsException1,Exception3{......}3、编写一个描述学生基本情况的类,属性包括姓名,学号,语文成绩,数学成绩和英语成绩,方法包括信息输出,设置姓名和学号,设置三门课程成绩,计算总成绩和平均成绩。在publicclassStudent11{publicstaticvoidmain(String[]args){Studentstudent=newStudent();student.setXingming("jack");student.setXuehao("3332233");student.setYuwen((float)60);student.setYingyu((float)40);student.setShuxue((float)100);System.out.println("姓名:"+student.getXingming());System.out.println("学号:"+student.getXuehao());System.out.println("语文:"+student.getYuwen());System.out.println("数学:"+student.getShuxue());System.out.println("英语:"+student.getYingyu());System.out.println("总成绩:"+student.zhongfen());System.out.println("平均:"+student.pingjunfen());}staticclassStudent{privateStringxingming;privateStringxuehao;privatefloatyuwen;privatefloatshuxue;privatefloatyingyu;publicStringgetXingming(){returnxingming;}publicvoidsetXingming(Stringxingming){this.xingming=xingming;}publicStringgetXuehao(){returnxuehao;}publicvoidsetXuehao(Stringxuehao){this.xuehao=xuehao;}publicfloatgetYuwen(){returnyuwen;}publicvoidsetYuwen(floatyuwen){this.yuwen=yuwen;}publicfloatgetShuxue(){returnshuxue;}publicvoidsetShuxue(floatshuxue){this.shuxue=shuxue;}publicfloatgetYingyu(){returnyingyu;}publicvoidsetYingyu(floatyingyu){this.yingyu=yingyu;}publicfloatzhongfen(){returnyuwen+shuxue+shuxue;}publicfloatpingjunfen(){returnzhongfen()/3;}}}main方法中对方法进行测试(15分)4、Java中实现多线程有几种方式?这几种方式有什么区别?然后采取其中一种方式设计一个线程例子,在例子中构造4个线程对象实现对同一数据类对象进行操作(数据初始值为0),其中线程对象1对数据执行+10的操作,线程对象2对数据执行+20的操作,对象3对数据执行乘以3的操作,线程对象4对数据执行除以4的操作,,要求考虑线程同步,保证数据操作的正确性。要求提供程序代码以及运行结果截图(15分)publicclassThreadTest{intnumber=0;publicstaticvoidmain(String[]args){ThreadTesttestThread=newThreadTest();newThread(newRunnableImpl1(testThread)).start();newThread(newRunnableImpl3(testThread)).start();newThread(newRunnableImpl2(testThread)).start();newThread(newRunnableImpl(testThread)).start();}publicvoidxiugai(intthreadType){synchronized(this){switch(threadType){case0:number=number+10;break;case1:number=number+20;break;case2:number=number*3;break;case3:number=number*4;break;default:break;}System.out.println(Thread.currentThread().getName()+":"+number);}}staticclassRunnableImplimplementsRunnable{privatefinalThreadTesttestThread;publicRunnableImpl(ThreadTesttestThread){this.testThread=testThread;}@Overridepublicvoidrun(){try{while(true){testThread.xiugai(3);sleep(1000);}}catch(InterruptedExceptionex){ex.printStackTrace();}}}staticclassRunnableImpl1implementsRunnable{privatefinalThreadTesttestThread;publicRunnableImpl1(ThreadTesttestThread){this.testThread=testThread;}@Overridepublicvoidrun(){try{while(true){testThread.xiugai(0);sleep(1000);}}catch(InterruptedExceptionex){ex.printStackTrace();}}}staticclassRunnableImpl2implementsRunnable{privatefinalThreadTesttestThread;publicRunnableImpl2(ThreadTesttestThread){this.testThread=testThread;}@Overridepublicvoidrun(){try{while(true){testThread.xiugai(2);sleep(1000);}}catch(InterruptedExceptionex){ex.printStackTrace();}}}staticclassRunnableImpl3implementsRunnable{privatefinalThreadTesttestThread;publicRunnableImpl3(ThreadTesttestThread){this.testThread=testThread;}@Overridepublicvoidrun(){try{while(true){testThread.xiugai(1);sleep(1000);}}catch(InterruptedExceptionex){ex.printStackTrace();}}}}二、编程题1、编写一个图形用户界面程序,包含两个按钮,一个信息标签(label)和一个显示面板,两个按钮分别为“掷色子”和“移动”,在显示面板中显示一个小人(用小圆以及线绘制),随机设定小人的初始位置,当点击“掷色子”按钮,随机产生移动信息(上移,下移,左移,右移,移动几步),并显示在信息标签中,点击移动,按照产生的移动信息,让小人进行移动。要求提供完整程序代码以及运行结果截图(20分)publicclassmainextendsjavax.swing.JFrame{publicmain(){initComponents();}@SuppressWarnings("unchecked")//<editor-folddefaultstate="collapsed"desc="GeneratedCode">privatevoidinitComponents(){jButton1=newjavax.swing.JButton();jButton2=newjavax.swing.JButton();jLabel1=newjavax.swing.JLabel();setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);jButton1.setText("掷色子");jButton1.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){jButton1ActionPerformed(evt);}});jButton2.setText("移动");jButton2.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){jButton2ActionPerformed(evt);}});javax.swing.GroupLayoutlayout=newjavax.swing.GroupLayout(getContentPane());getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(javax.swing.GroupLayout.Alignment.TRAILING,layout.createSequentialGroup().addGap(42,42,42).addComponent(jButton2).addGap(43,43,43).addComponent(jLabel1,javax.swing.GroupLayout.PREFERRED_SIZE,95,javax.swing.GroupLayout.PREFERRED_SIZE).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,53,Short.MAX_VALUE).addComponent(jButton1).addGap(41,41,41)));layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(31,31,31).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jButton1).addComponent(jButton2)).addComponent(jLabel1,javax.swing.GroupLayout.PREFERRED_SIZE,32,javax.swing.GroupLayout.PREFERRED_SIZE)).addContainerGap(237,Short.MAX_VALUE)));pack();}//</editor-fold>privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){Randomrandom=newRandom();randomNum=random.nextInt(4)+1;randomPosition=random.nextInt(4);jLabel1.setText(strs[randomPosition]+randomNum+"步");}privatevoidjButton2ActionPerformed(java.awt.event.ActionEventevt){repaint();}publicstaticvoidmain(Stringargs[]){try{for(javax.swing.UIManager.LookAndFeelInfoinfo:javax.swing.UIManager.getInstalledLookAndFeels()){if("Nimbus".equals(info.getName())){javax.swing.UIManager.setLookAndFeel(info.getClassName());break;}}}catch(ClassNotFoundException|InstantiationException|IllegalAccessException|javax.swing.UnsupportedLookAndFeelExceptionex){java.util.logging.Logger.getLogger(main.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);}//</editor-fold>//</editor-fold>/*Createanddisplaytheform*/java.awt.EventQueue.invokeLater(newRunnableImpl());}@Overridepublicvoidpaint(Graphicsg){super.paint(g);switch(randomPosition){case0:y=y-randomNum*10;break;case1:y=y+randomNum*10;break;case2:x=x-randomNum*10;break;case3:x=x+randomNum*10;break;default:break;}g.drawRect(x,y,30,30);}intx=200;inty=200;intrandomNum=0;intrandomPosition=0;String[]strs={"上移","下移","左移","右移"};//Variablesdeclaration-donotmodifyprivatejavax.swing.JButtonjButton1;privatejavax.swing.JButtonjButton2;privatejavax.swing.JLabeljLabel1;//EndofvariablesdeclarationprivatestaticclassRunnableImplimplementsRunnable{publicRunnableImpl(){}@Overridepublicvoidrun(){newmain().setVisible(true);}}}2、编写一个班级推优(优秀学生干部)投票管理程序。列出参与推优的学生名单(6名),可以勾选进行投票,要求每个参选学生前面有图标表示候选人的职务,每人可以投3票,每次投票后能够显示当前投票人数以及每名候选者得票数,图形化柱状图显示得票数,可以保存投票结果到文本文件。要求提供完整程序代码以及运行结果截图(20分)/**Tochangethislicenseheader,chooseLicenseHeadersinProjectProperties.*Tochangethistemplatefile,chooseTools|Templates*andopenthetemplateintheeditor.*/packagetestjava;importjava.awt.BorderLayout;importjava.awt.Font;importjava.util.List;importjavax.swing.JCheckBox;importorg.jfree.chart.ChartFactory;importorg.jfree.chart.ChartPanel;importorg.jfree.chart.JFreeChart;importorg.jfree.chart.axis.CategoryAxis;importorg.jfree.chart.axis.NumberAxis;importorg.jfree.chart.axis.ValueAxis;importorg.jfree.chart.plot.CategoryPlot;importorg.jfree.chart.plot.PlotOrientation;importorg.jfree.data.category.CategoryDataset;importorg.jfree.data.category.DefaultCategoryDataset;/****@authorldl*/publicclassTestFr1extendsjavax.swing.JFrame{privatejavax.swing.JButtonjButton1;privatejavax.swing.JCheckBoxjCheckBox1;privatejavax.swing.JCheckBoxjCheckBox2;privatejavax.swing.JCheckBoxjCheckBox3;privatejavax.swing.JCheckBoxjCheckBox4;privatejavax.swing.JCheckBoxjCheckBox5;privatejavax.swing.JCheckBoxjCheckBox6;privatejavax.swing.JPaneljPanel1;/***CreatesnewformTestFr*/publicTestFr1(){initComponents();CategoryDatasetdataset=getDataSet();JFreeChartchart=ChartFactory.createBarChart("统计",//图表标题"投票统计",//目录轴的显示标签"数量",//数值轴的显示标签dataset,//数据集PlotOrientation.VERTICAL,//图表方向:水平、垂直true,false,false);CategoryPlotplot=chart.getCategoryPlot();//获取图表区域对象NumberAxisnumberaxis=(NumberAxis)plot.getRangeAxis();numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());CategoryAxisdomainAxis=plot.getDomainAxis();//水平底部列表domainAxis.setLabelFont(newFont("黑体",Font.BOLD,14));//水平底部标题domainAxis.setTickLabelFont(newFont("宋体",Font.BOLD,12));//垂直标题ValueAxisrangeAxis=plot.getRangeAxis();//获取柱状rangeAxis.setLabelFont(newFont("黑体",Font.BOLD,15));chart.getLegend().setItemFont(newFont("黑体",Font.BOLD,15));chart.getTitle().setFont(newFont("宋体",Font.BOLD,20));//设置标题字体ChartPanelchartPanel=newChartPanel(chart,true);jPanel1.setLayout(newBorderLayout(0,0));jPanel1.add(chartPanel);jPanel1.repaint();}/***Thismethodiscalledfromwithintheconstructortoinitializetheform.*WARNING:DoNOTmodifythiscode.Thecontentofthismethodisalways*regeneratedbytheFormEditor.*/@SuppressWarnings("unchecked")//<editor-folddefaultstate="collapsed"desc="GeneratedCode">//GEN-BEGIN:initComponentsprivatevoidinitComponents(){jCheckBox1=newjavax.swing.JCheckBox();jPanel1=newjavax.swing.JPanel();jCheckBox5=newjavax.swing.JCheckBox();jCheckBox2=newjavax.swing.JCheckBox();jCheckBox3=newjavax.swing.JCheckBox();jCheckBox6=newjavax.swing.JCheckBox();jCheckBox4=newjavax.swing.JCheckBox();jButton1=newjavax.swing.JButton();setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);jCheckBox1.setText("班长");jCheckBox1.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){jCheckBox1ActionPerformed(evt);}});javax.swing.GroupLayoutjPanel1Layout=newjavax.swing.GroupLayout(jPanel1);jPanel1.setLayout(jPanel1Layout);jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0,411,Short.MAX_VALUE));jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0,0,Short.MAX_VALUE));jCheckBox5.setText("李4");jCheckBox5.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){jCheckBox5ActionPerformed(evt);}});jCheckBox2.setText("卫生1");jCheckBox2.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){jCheckBox2ActionPerformed(evt);}});jCheckBox3.setText("李2");jCheckBox3.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){jCheckBox3ActionPerformed(evt);}});jCheckBox6.setText("李5");jCheckBox6.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){jCheckBox6ActionPerformed(evt);}});jCheckBox4.setText("李3");jCheckBox4.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){jCheckBox4ActionPerformed(evt);}});jButton1.setText("投票");javax.swing.GroupLayoutlayout=newjavax.swing.GroupLayout(getContentPane());getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addContainerGap().addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jCheckBox1).addComponent(jCheckBox2).addComponent(jCheckBox3).addComponent(jCheckBox4).addComponent(jCheckBox5).addComponent(jCheckBox6).addComponent(jButton1)).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(jPanel1,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE)));layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(14,14,14).addComponent(jCheckBox1).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED).addComponent(jCheckBox2).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(jCheckBox3).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED).addComponent(jCheckBox4).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED).addComponent(jCheckBox5).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED).addComponent(jCheckBox6).addGap(18,18,18).addComponent(jButton1).addContainerGap(83,Short.MAX_VALUE)).addComponent(jPanel1,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE));pack();}//</editor-fold>//GEN-END:initComponents/***@paramargsthecommandlinearguments*/publicstaticvoidmain(Stringargs[]){/*SettheNimbuslookandfeel*///<editor-folddefaultstate="collapsed"desc="Lookandfeelsettingcode(optional)">/*IfNimbus(introducedinJavaSE6)isnotavailable,staywiththedefaultlookandfeel.*Fordetailssee/javase/tutorial/uiswing/lookandfeel/plaf.html*/try{for(javax.swing.UIManager.LookAndFeelInfoinfo:javax.swing.UIManager.getInstalledLookAndFeels()){if("Nimbus".equals(info.getName())){javax.swing.UIManager.setLookAndFeel(info.getClassName());break;}}}catch(ClassNotFoundExceptionex){java.util.logging.Logger.getLogger(TestFr.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);}catch(InstantiationExceptionex){java.util.logging.Logger.getLogger(TestFr.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);}catch(IllegalAccessExceptionex){java.util.logging.Logger.getLogger(TestFr.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);}catch(javax.swing.UnsupportedLookAndFeelExceptionex){java.util.logging.Logger.getLogger(TestFr.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);}//</editor-fold>/*Createanddisplaytheform*/java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newTestFr().setVisible(true);}});} privatevoidjCheckBox1ActionPerformed(java.awt.event.ActionEventevt){JCheckBoxjCheckBox=(JCheckBox)evt.getSource();intintValue=dataset.getValue(0,0).intValue();if(jCheckBox.isSelected()){intValue++;}else{intValue--;}dataset.setValue(intValue,"1","1");}privatevoidjCheckBox5ActionPerformed(java.awt.event.ActionEventevt){//TODOaddyourhandlingcodehere:JCheckBoxjCheckBox=(JCheckBox)evt.getSource();intintValue=dataset.getValue(4,4).intValue();if(jCheckBox.isSelected()){intValue++;}else{intValue--;}dataset.setValue(intValue,"4","4");}privatevoidjCheckBox2ActionPerformed(java.awt.event.Acti

温馨提示

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

最新文档

评论

0/150

提交评论