java编程阶乘,java阶乘算法程序
代码运行结果如下:
输入n的值之后,就可以点击开始计算,计算过程中可以暂停计算,也可以停止计算
这是几种线程的操作:
1 .睡眠方法,线程按时间睡眠,到时间恢复。
2.suspend/resume,暂停/继续方法Java .多线程废弃方法。资源独占,容易发生死锁,脏数据。
停下来,停止方法,Java多线程废弃方法,线程不安全。
4 .等等方法,使得当前线程立刻停止运行,处于等待状态(等等),并将当前线程置入锁对象的等待队列中,直到被通知(通知)或被中断为止。
5 .通知方法,唤醒处于等待状态的线程
代码如下:
导入Java。awt。borderlayout导入Java。awt。滚动窗格;导入javax。挥棒。jbutton导入javax。挥棒。jframe导入javax。挥棒。jlabel导入javax。挥棒。jpanel导入javax。挥棒。jscrollpane导入javax。挥棒。jtextarea导入javax。挥棒。jtextfield导入javax。挥棒。可滚动;导入算法。计算;公共类thread ui { private JTextField textField;二等兵JTextArea consoleArea私有计算小卡私有线程线程;public ThreadUI(){ JFrame frame=new JFrame(阶乘计算所用时间统计);frame.setSize(500,500);框架。setdefaultcloseoperation(JFrame .EXIT _ ON _ CLOSE);//北侧,加操作栏框架。set layout(new BorderLayout());JPanel north pan=new JPanel();JLabel label=new JLabel(请输入n的值:);textField=new JTextField(5);JButton stratBtn=new JButton(开始计算);stratAction(斯特拉特BTN);JButton pauseBtn=new JButton(暂停计算);暂停行动(暂停BTN);JButton stopBtn=new JButton(停止计算);停止行动(停止BTN);northPan.add(标签);北潘。add(textField);北潘。加(斯特拉特BTN);北潘。补充(暂停BTN);北潘。补充(停止BTN);frame.add(northPan,BorderLayout .北);//中间,记录计算过程与结果控制台区域=new JTextArea();JScrollPane scroll pane=new JScrollPane(控制台区域);frame.add(scrollPane,BorderLayout .中心);框架。设置可见(真);}//停止计算的事件私人无效停止行动(JButton停止BTN){停止BTN。addactionlistener((e)-{ cal。stop();//thread.stop()。});}//暂停计算的事件私人无效暂停动作(JButton暂停BTN){暂停BTN。addactionlistener((e)-{字符串暂停文本=暂停BTN。gettext();if (pauseText.equals(暂停计算)){ cal。挂起();//线程。挂起();pauseBtn.setText(继续计算);} else { cal。resume();//线程。resume();pauseBtn.setText(暂停计算);}});}//开始计算的事件private void stratAction(JButton button){ button。addactionlistener((e)-{控制台区域。settext(空);字符串输入=textfield。gettext();if(input==null 输入。equals(){控制台区域。settext(请先输入您要计算的阶乘值);返回;}int n=Integer.valueOf(输入);cal=新计算(n,(内容)-{控制台区域。append(内容 n );});//线程=新线程(cal);//线程。start();加州start();});} public static void main(String[]args){ new ThreadUI();} }导入Java。数学。大整数;导入用户界面.可记录;公共类计算扩展线程/*实现runnable */{ private int n;私有可记录的;public Calculate(int n,Logable log){ this。n=n这个。log able=log}私有void计算()抛出中断异常{ big integer RES=big integer。(1)的值;大整数和=大整数。(0)的值;StringBuilder sb=new StringBuilder();for(int I=1;I=n;I){ RES=RES . multiply(大整数。(I)的值);总和=总和。添加(RES);某人追加((i==1? : )我!);可记录。记录(某人)。tostring()= sum);试试{线程。睡眠((int)(数学。random()* 500 500));} catch(中断异常e){ e . printstacktrace();} } } @ override public void run(){ try { caculate();} catch(中断异常e){ e . printstacktrace();}}}今天就到这里啦,我们下次见哦
到此这篇关于爪哇介绍多线程计算阶乘实现方法的文章就介绍到这了,更多相关爪哇多线程计算阶乘内容请搜索盛行信息技术以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行它!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。