日期:2011-03-22 16:16:00 来源:本站整理
用主类归并线程[Java编程]
本文“用主类归并线程[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在上面的例子中,我们看到线程类(Thread)与程序的主类(Main)是脱离开的.这样做非常公道,并且易于理解.但是,还有另一种方法也是常常要用到的.固然它不十清楚确,但普通都要更简便一些(这也注释了它为什么非常风行).通过将主程序类变成一个线程,这种情势可将主程序类与线程类归并到一同.由于对一个GUI程序来说,主程序类必须从Frame或Applet担当,所以必须用一个接口加入额外的功效.这个接口叫作Runnable,此中包含了与Thread一致的基本办法.事实上,Thread也实现了Runnable,它只指出有一个run()办法.
对归并后的程序/线程来说,它的用法不是十清楚确.当我们启动程序时,会成立一个Runnable(可运行的)对象,但不会自行启动线程.线程的启动必须明确举行.下面这个程序向我们演示了这一点,它再现了Counter2的功效:
目前run()位于类内,但它在init()完毕今后仍处在“就寝”状况.若按下启动按钮,线程便会用多少有些暧昧的表达方法成立(若线程尚不存在)://: Counter3.java // Using the Runnable interface to turn the // main class into a thread. import java.awt.*; import java.awt.event.*; import java.applet.*; public class Counter3 extends Applet implements Runnable { private int count = 0; private boolean runFlag = true; private Thread selfThread = null; private Button onOff = new Button("Toggle"), start = new Button("Start"); private TextField t = new TextField(10); public void init() { add(t); start.addActionListener(new StartL()); add(start); onOff.addActionListener(new OnOffL()); add(onOff); } public void run() { while (true) { try { selfThread.sleep(100); } catch (InterruptedException e){} if(runFlag) t.setText(Integer.toString(count++)); } } class StartL implements ActionListener { public void actionPerformed(ActionEvent e) { if(selfThread == null) { selfThread = new Thread(Counter3.this); selfThread.start(); } } } class OnOffL implements ActionListener { public void actionPerformed(ActionEvent e) { runFlag = !runFlag; } } public static void main(String[] args) { Counter3 applet = new Counter3(); Frame aFrame = new Frame("Counter3"); aFrame.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); aFrame.add(applet, BorderLayout.CENTER); aFrame.setSize(300,200); applet.init(); applet.start(); aFrame.setVisible(true); } } ///:~
new Thread(Counter3.this);
若某样东西有一个Runnable接口,实际只是意味着它有一个run()办法,但不存在与之相关的任何特别东西——它不具有任何天生的线程处理本领,这与那些从Thread担当的类是差别的.所认为了从一个Runnable对象产生线程,必须单独成立一个线程,并为其传送Runnable对象;可为其利用一个特别的构建器,并令其采取一个Runnable作为自己的参数利用.随后便可为那个线程调用start(),以下所示:
selfThread.start();
它的作用是履行通例初始化操作,然后调用run().
Runnable接口最大的一个长处是全部东西都从属于相同的类.若需拜候什么东西,只需简单地拜候它便可,不需求触及一个独立的对象.但为这种便利也是要付出代价的——只可为那个特定的对象运行单独一个线程(固然可成立那种范例的多个对象,大概在差别的类里成立其他对象).
注意Runnable接口本身并非造成这一限制的罪魁祸首.它是由于Runnable与我们的主类归并造成的,因为每个利用只能主类的一个对象.
以上是“用主类归并线程[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:java制作多个线程
- ·下一篇文章:针对用户界面的多线程
- ·中查找“用主类归并线程”更多相关内容
- ·中查找“用主类归并线程”更多相关内容
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论