SWT中运用多线程编程

SWT中运用多线程编程

ID:44416861

大小:68.25 KB

页数:4页

时间:2019-10-21

SWT中运用多线程编程_第1页
SWT中运用多线程编程_第2页
SWT中运用多线程编程_第3页
SWT中运用多线程编程_第4页
资源描述:

《SWT中运用多线程编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、SWT中运用多线程编程首先让我们來复习下一什么是多线程?多线程是这样一•种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没冇独立的存储空间,而是和所属进程中的英它线程共享一个存储空间,这使得线程间的通信远较进程简单。多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的“同时”。如果系统只有一个CPU,那么真止的“同时”是不可能的,但是由丁-CPU的速度非常快,川户感觉不到其中的区别,因此我们也不用关

2、心它,只需要设想各个线程是同时执行即可。多线程和传统的单线程在程序设计上最人的区别在于,由丁•各个线程的控制流彼此独立,使得各个线程之间的代码是乱序执行的。经过以上介绍,想必大家都已经冋忆起当时写多线程程序的病苦。那么再让我们冋忆一下,Java中是如何实现多线程的吧。作为一个完全血向对彖的语言,Java提供了类java.lang.Thread來方便多线程编程,这个类提供了大量的方法來方便我们控制口己的各个线程。让我们来看一看Thread类0Thread类最重要的方法是run(),它为Thread类的方法start()所调用,提供我们的

3、线程所要执行的代码。为了指定我们白己的代码,只需要覆盖它!1曰田publicclassMyThreadextendsThread{2Iprivateintindex;3I4申曲publicMyThread(inti){5Ithis」ndex=i;6I-}7Ipublicvoidrun(){9甲申while(this.index<6){10System.out.println(“index=H+this.index);1112this.index++;13卜}14~}1516白勺publicstaticvoidmain(String[

4、]args){17申由for(inti=0;i<10;i++){18newMyThread(i).start();19卜}20~}21}22当然,除了以上这种方法,Java还提供了Runnable接口。该接口只有一个方法run(),我们声明自C的类实现Runnable接口并提供这一方法,将线程代码耳入其屮,就完成了这一部分的任务。但是Runnable接口并没有任何对线程的支持,我们还必须创建Thread类的实例,这一点通过Thread类的构造函数來实现。1曰牛ublicclassMyThreadimplementsRunnable{

5、2Iprivateintindex;3I4向®publicMyThread(inti){5Ithis.index=i;6卜}78申由publicvoidrun(){9已却while(this.index<6){10System.out.println("index二”+this.index);1112this・index++;13141516publicstaticvoidmain(String[]args){17for(inti0;i<10;i++){18newThread(newMyThread(i)).start();19202

6、12223我们已经习惯了以上两种线程的方法,但是,Eclipse的swt却不相同。如果按照我们以上的方法,当访问swt的某一组件时,系统会抛出异常:org.eclipse.swt.SWTException:Invalidthreadaccess那么,在swt中,如保使用线程呢?1publicclassMyThreadextendsThread2IprivateDisplaydisplay;3IprivateLabelminiLabel;4I5Iprivatestaticintindex=0;67抑publicMyThread(Disp

7、laydisplay,Labellabel){8this.display=display;9this.miniLabel=label;10卜}1112軸publicvoidrun(){13申申try{while(true){Thread.sleep(1000);if(!this.display.isDisposed()){Rurrnablerunnable=newRunnable(){publicvoidrun(){//yoursource}};display.asyncExec(runnable);//关键在这一句上甲甲}catch

8、(Exceptionex){}卜}L}swt的display有两种方式买现线程:asyncExec是线程界步的,syncExec是线程同步的。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。