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

Posted

篇首语:天下之事常成于困约,而败于奢靡。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Eclipse客户端程序中多线程的使用[3]相关的知识,希望对你有一定的参考价值。

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

  这样对于myjob 和myjob 这两个Job 它们不会再同时执行 Myjob 会等待myjob 执行完再执行 这是由Eclipse的JobManager来提供实现的 JobManager可以保证所有启动的Job中 任意两个Job的rule是没有冲突的 我们在上面定义的rule是最简单的 我们可以重写isConflicting函数来实现一些更加复杂的控制 比如控制同时同类型的Job最多只有指定的个数在运行 但是我们要注意 isConflicting方法不能过于复杂 一旦一个Job的rule与其他Job的rule有冲突 isConflicting方法会调用很多次 如果其中的计算过于复杂 会影响整体的性能

  根据需要执行Job 由于我们有的Job有可能不是立即执行的 在有些情况下 等到该Job准备执行的时候 该Job所要执行的任务已经没有意义了 这时 我们可以使用Job的shouldSchedule()和shouldRun()来避免Job的运行 在我们定义一个Job时 我们可以重载shouldSchedule和shouldRun方法 在这些方法中 我们可以检查Job运行的一些先决条件 如果这些条件不满足 我们就可以返回false JobManager在安排Job运行时 它会先调用该Job的shouldSchedule方法 如果返回为false JobManager就不会再安排这个Job运行了 同样 JobManager在真正启动一个线程运行一个Job前 它会调用该Job的shouldRun方法 如果返回false 它不再运行这个Job 在下面的例子中 我们希望启动一个Job在十秒钟之后更新文本框中的内容 为了保证我们的Job运行时是有意义的 我们需要确保我们要更新的文本框没有被销毁 我们重载了shouldSchedule和shouldRun方法

Text text = new Text(parent SWT NONE);UIJob refreshJob = new UIJob( 更新界面 )public IStatus runInUIThread(IProgressMonitor monitor)       text setText( 新文本 );  return Status OK_STATUS;  public boolean shouldSchedule()  return !text isDisposed();  public boolean shouldRun()  return !text isDisposed(); ;refreshJob schedule( );

  在UI线程中涉及长时间处理的任务 我们经常碰到这样一种情况 用户操作菜单或者按钮会触发查询大量数据 数据查询完后更新表格等界面元素 用户点击菜单或者按钮所触发的处理程序一般处于UI线程 为了避免阻塞UI 我们必须把数据查询等费时的工作放到单独的Job中执行 一旦数据查询完毕 我们又必须更新界面 这时我们又需要使用UI线程进行处理 下面是处理这种情况的示例代码

button addSelectionListener(new SelectionListener() public void widgetSelected(SelectionEvent e)  perform();   public void widgetDefaultSelected(SelectionEvent e)  perform(); 

 private void perform()  Job job = new Job( 获取数据 )   protected IStatus run(IProgressMonitor monitor)    // 在此添加获取数据的代码    Display getDefault() asyncExec(new Runnable() public void run()  // 在此添加更新界面的代码 );   ;  job schedule(); 

 );

cha138/Article/program/Java/gj/201311/27699

相关参考

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

知识大全 socket 线程 思路 java

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