知识大全 Eclipse客户端程序中多线程的使用[2]

Posted

篇首语:刑天舞干戚,猛志固常在。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Eclipse客户端程序中多线程的使用[2]相关的知识,希望对你有一定的参考价值。

Eclipse客户端程序中多线程的使用[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  Eclipse中的UI线程

  另外 在Eclipse的线程处理中 有一个UI线程的概念 Eclipse程序中的主线程是一个特殊的线程 程序启动后会先执行这个线程 也就是我们的main()函数所在的线程 作为桌面应用程序 我们的主线程主要负责界面的响应以及绘制界面元素 所以通常我们也叫它UI线程

  以下代码 编过SWT应用程序的读者会非常熟悉 它一般出现在main函数的结尾 下面来仔细分析一下它的详细情况

//当窗口未释放时while (!shell isDisposed())

    //如果display对象事件队列中没有了等待的事件 就让该线程进入等待状态    if (!display readAndDispatch())        display sleep();

  上面的程序实际上就是我们UI线程的处理逻辑 当程序启动后 UI线程会读取事件等待队列 看有没有事件等待处理 如果有 它会进行相应处理 如果没有它会进入睡眠状态 如果有新的事件到来 它又会被唤醒 进行处理 UI线程所需要处理的事件包括用户的鼠标和键盘操作事件 操作系统或程序中发出的绘制事件 一般来说 处理事件的过程也就是响应用户操作的过程

  一个好的桌面应用程序需要对用户的操作作出最快的响应 也就是说我们的UI线程必须尽快的处理各种事件 从我们程序的角度来说 在UI线程中我们不能进行大量的计算或者等待 否则用户操作事件得不到及时的处理 通常 如果有大量的计算或者需要长时间等待(例如进行网络操作或者数据库操作)时 我们必须将这些长时间处理的程序单独开辟出一个线程来执行 这样虽然后台运行着程序 但也不会影响界面上的操作

  除主线程之外的所有线程都是非UI线程 在Eclipse程序中 我们所有对界面元素的操作都必须放到UI线程中来执行 否则会抛出Exception 所以我们要区分出UI线程和非UI线程 保证我们对UI的操作都在UI线程中执行

  如何判断当前线程是否UI线程: 你可以通过调用Display getCurrent()来知道当前线程是否是UI线程 如果Display getCurrent()返回为空 表示当前不是UI线程

  Eclipse中使用线程的几种典型情况

  控制Job的并发运行 对于某些Job 为了避免并发性问题 我们希望同时只有一个这样的Job在运行 这时我们需要控制Job的并发运行 在另一种情况下 我们也需要控制Job的并发运行 我们在程序中对于一个任务 我们有可能会启动一个Job来执行 对于少量的任务来说 这是可行的 但是如果我们预测可能会同时有大量的任务 如果每一个任务启动一个Job 我们同时启动的Job就会非常多 这些Job会侵占大量的资源 影响其他任务的执行 我们可以使用Job的rule来实现控制Job的并发执行 简单的我们可以通过下面的代码实现 我们先定义一个如下rule

private ISchedulingRule Schedule_RULE = new ISchedulingRule()   public boolean contains(ISchedulingRule rule)    return this equals(rule);    public boolean isConflicting(ISchedulingRule rule)    return this equals(rule);   ;

  对于需要避免同时运行的Job 我们可以将它们的rule设成上面定义的rule 如

 myjob setRule(Schedule_RULE); myjob setRule(Schedule_RULE); cha138/Article/program/Java/gj/201311/27698

相关参考

知识大全 Eclipse客户端程序中多线程的使用[1]

Eclipse客户端程序中多线程的使用[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文

知识大全 Eclipse客户端程序中多线程的使用[5]

Eclipse客户端程序中多线程的使用[5]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  针对

知识大全 Eclipse客户端程序中多线程的使用[4]

Eclipse客户端程序中多线程的使用[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  延时

知识大全 Eclipse客户端程序中多线程的使用[3]

Eclipse客户端程序中多线程的使用[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这样

知识大全 Eclipse客户端程序中多线程的使用[6]

Eclipse客户端程序中多线程的使用[6]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Jo

知识大全 关于Eclipse中UI程序的线程的讨论

关于Eclipse中UI程序的线程的讨论  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!虽然各个操作

知识大全 Java开发中多线程同步技巧[2]

Java开发中多线程同步技巧[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb

知识大全 Java开发中多线程同步技巧[3]

Java开发中多线程同步技巧[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb

知识大全 Java开发中多线程同步技巧[1]

Java开发中多线程同步技巧[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb

知识大全 socket 线程 思路 java

  网上参考别人的例子改自己的程序终于搞明白了原来在socket的服务器端设置线程并不是像之前想的那样建立一个连接后就重新开一个端口去监听这样的想法遇到了很多问题首先当我把客户端弄成for循环递增的链