Java开发中可以防止界面假死的刷新代码
代码如下:
try { // 创建一个线程 Thread thread = new Thread() { public void run() { int i = 0; while(true){ final long start = System.currentTimeMillis(); try { Thread.sleep(1); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } final int a = i; if (!Display.getDefault().isDisposed()) { Runnable runnable = new Runnable() { public void run() { processModel.setProcessName(start + "---" + a); } }; Display.getDefault().syncExec(runnable); } i++; } } }; thread.start(); } catch (Exception e) { e.printStackTrace(); }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接
相关推荐
-
Java源码解析之可重入锁ReentrantLock
本文基于jdk1.8进行分析. ReentrantLock是一个可重入锁,在ConcurrentHashMap中使用了ReentrantLock. 首先看一下源码中对ReentrantLock的介绍.如下图.ReentrantLock是一个可重入的排他锁,它和synchronized的方法和代码有着相同的行为和语义,但有更多的功能.ReentrantLock是被最后一个成功lock锁并且还没有unlock的线程拥有着.如果锁没有被别的线程拥有,那么一个线程调用lock方法,就会成功获取锁并返回.
-
Java源码解析TreeMap简介
TreeMap是常用的排序树,本文主要介绍TreeMap中,类的注释中对TreeMap的介绍.代码如下. /** * A Red-Black tree based {@link NavigableMap} implementation. * The map is sorted according to the {@linkplain Comparable natural * ordering} of its keys, or by a {@link Comparator} provided at
-
详细分析Java并发集合ArrayBlockingQueue的用法
在上一章中,我们介绍了阻塞队列BlockingQueue,下面我们介绍它的常用实现类ArrayBlockingQueue. 一. 用数组来实现队列 因为队列这种数据结构的特殊要求,所以它天然适合用链表的方式来实现,用两个变量分别记录链表头和链表尾,当删除或插入队列时,只要改变链表头或链表尾就可以了,而且链表使用引用的方式链接的,所以它的容量几乎是无限的. 那么怎么使用数组来实现队列,我们需要四个变量:Object[] array来存储队列中元素,headIndex和tailIndex分别记录队列
-
Java源码解析CopyOnWriteArrayList的讲解
本文基于jdk1.8进行分析. ArrayList和HashMap是我们经常使用的集合,它们不是线程安全的.我们一般都知道HashMap的线程安全版本为ConcurrentHashMap,那么ArrayList有没有类似的线程安全的版本呢?还真有,它就是CopyOnWriteArrayList. CopyOnWrite这个短语,还有一个专门的称谓COW. COW不仅仅是java实现集合框架时专用的机制,它在计算机中被广泛使用. 首先看一下什么是CopyOnWriteArrayList,它的类前面
-
Java源码解析阻塞队列ArrayBlockingQueue功能简介
本文基于jdk1.8进行分析. 阻塞队列是java开发时常用的一个数据结构.首先看一下阻塞队列的作用是什么.阻塞队列的作用,从源码中类的注释中来了解,是最清晰准确的. ArrayBlockingQueue是一个用数组实现的有界阻塞队列.提供FIFO的功能.队列头上的元素是在队列中呆了最长时间的元素,队列尾上的元素是在队列中呆了时间最短的元素.新元素会插入在队列尾部,从队列获取元素时会从队列头上获取. 这是一个传统的有界队列,在这个有界队列里,一个固定大小的数组用来保存生产者产生的元素和消费者获取
-
Java源码解析ConcurrentHashMap的初始化
首先看一下代码 private final Node<K,V>[] initTable() { Node<K,V>[] tab; int sc; while ((tab = table) == null || tab.length == 0) { // 第一次检查 if ((sc = sizeCtl) < 0) Thread.yield(); // lost initialization race; just spin else if (U.compareAndSwapInt
-
Java通过XPath获取XML文件中符合特定条件的节点
在Java解析XML文件的过程中,有时需要获取符合某些特定条件的节点,以下是实现代码. import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import org.eclipse.swt.widgets.Shell; import org.ec
-
Java源码解析阻塞队列ArrayBlockingQueue常用方法
本文基于jdk1.8进行分析 ArrayBlockingQueue的功能简介参考https://www.jb51.net/article/154211.htm. 首先看一下ArrayBlockingQueue的成员变量.如下图.最主要的成员变量是items,它是一个Object类型的数组用于保存阻塞队列中的元素.其次是takeIndex,putIndex,count,分别表示了从队列获取元素的位置,往队列里放元素的位置和队列中元素的个数.然后是lock,notEmpty和notFull三个和锁相
-
java集合框架 arrayblockingqueue应用分析
Queue ------------ 1.ArrayDeque, (数组双端队列) 2.PriorityQueue, (优先级队列) 3.ConcurrentLinkedQueue, (基于链表的并发队列) 4.DelayQueue, (延期阻塞队列)(阻塞队列实现了BlockingQueue接口) 5.ArrayBlockingQueue, (基于数组的并发阻塞队列) 6.LinkedBlockingQueue, (基于链表的FIFO阻塞队列) 7.LinkedBlockingDeque, (
-
Java源码解析阻塞队列ArrayBlockingQueue介绍
Java的阻塞队列,在实现时,使用到了lock和condition,下面是对其主要方法的介绍. 首先看一下,阻塞队列中使用到的锁. /** Main lock guarding all access **/ final ReentrantLock lock; /** Condition for waiting takes **/ private final Condition notEmpty; /** Condition for waiting puts **/ private final
随机推荐
- angular实现spa单页面应用实例
- oracle常见故障类别及规划解析
- Django自定义插件实现网站登录验证码功能
- Vue.js之slot深度复制详解
- 在浏览器窗口上添加遮罩层的方法
- Python探索之SocketServer详解
- js实现从右向左缓缓浮出网页浮动层广告的方法
- 让ThinkPHP的模板引擎达到最佳效率的方法详解
- 给php新手谈谈我的学习心得
- vml圆角矩形最简布局第1/5页
- javascript修改图片src的方法
- Java中HttpServletResponse响应中文出现乱码问题
- 详解mongodb 主从配置
- js 操作css实现代码
- Apache No space left on device的解决办法
- 简介Android应用中sharedPreferences类存储数据的用法
- Springboot打成war包并在tomcat中运行的部署方法
- vue 动态改变静态图片以及请求网络图片的实现方法
- 在Android中使用Anntation来代替ENUM的方法
- 浅析php如何实现爬取数据原理