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源码解析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源码解析阻塞队列ArrayBlockingQueue功能简介
本文基于jdk1.8进行分析. 阻塞队列是java开发时常用的一个数据结构.首先看一下阻塞队列的作用是什么.阻塞队列的作用,从源码中类的注释中来了解,是最清晰准确的. ArrayBlockingQueue是一个用数组实现的有界阻塞队列.提供FIFO的功能.队列头上的元素是在队列中呆了最长时间的元素,队列尾上的元素是在队列中呆了时间最短的元素.新元素会插入在队列尾部,从队列获取元素时会从队列头上获取. 这是一个传统的有界队列,在这个有界队列里,一个固定大小的数组用来保存生产者产生的元素和消费者获取
-
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常用方法
本文基于jdk1.8进行分析 ArrayBlockingQueue的功能简介参考https://www.jb51.net/article/154211.htm. 首先看一下ArrayBlockingQueue的成员变量.如下图.最主要的成员变量是items,它是一个Object类型的数组用于保存阻塞队列中的元素.其次是takeIndex,putIndex,count,分别表示了从队列获取元素的位置,往队列里放元素的位置和队列中元素的个数.然后是lock,notEmpty和notFull三个和锁相
-
Java源码解析CopyOnWriteArrayList的讲解
本文基于jdk1.8进行分析. ArrayList和HashMap是我们经常使用的集合,它们不是线程安全的.我们一般都知道HashMap的线程安全版本为ConcurrentHashMap,那么ArrayList有没有类似的线程安全的版本呢?还真有,它就是CopyOnWriteArrayList. CopyOnWrite这个短语,还有一个专门的称谓COW. COW不仅仅是java实现集合框架时专用的机制,它在计算机中被广泛使用. 首先看一下什么是CopyOnWriteArrayList,它的类前面
-
详细分析Java并发集合ArrayBlockingQueue的用法
在上一章中,我们介绍了阻塞队列BlockingQueue,下面我们介绍它的常用实现类ArrayBlockingQueue. 一. 用数组来实现队列 因为队列这种数据结构的特殊要求,所以它天然适合用链表的方式来实现,用两个变量分别记录链表头和链表尾,当删除或插入队列时,只要改变链表头或链表尾就可以了,而且链表使用引用的方式链接的,所以它的容量几乎是无限的. 那么怎么使用数组来实现队列,我们需要四个变量:Object[] array来存储队列中元素,headIndex和tailIndex分别记录队列
-
java集合框架 arrayblockingqueue应用分析
Queue ------------ 1.ArrayDeque, (数组双端队列) 2.PriorityQueue, (优先级队列) 3.ConcurrentLinkedQueue, (基于链表的并发队列) 4.DelayQueue, (延期阻塞队列)(阻塞队列实现了BlockingQueue接口) 5.ArrayBlockingQueue, (基于数组的并发阻塞队列) 6.LinkedBlockingQueue, (基于链表的FIFO阻塞队列) 7.LinkedBlockingDeque, (
-
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介绍
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
-
Java源码解析之可重入锁ReentrantLock
本文基于jdk1.8进行分析. ReentrantLock是一个可重入锁,在ConcurrentHashMap中使用了ReentrantLock. 首先看一下源码中对ReentrantLock的介绍.如下图.ReentrantLock是一个可重入的排他锁,它和synchronized的方法和代码有着相同的行为和语义,但有更多的功能.ReentrantLock是被最后一个成功lock锁并且还没有unlock的线程拥有着.如果锁没有被别的线程拥有,那么一个线程调用lock方法,就会成功获取锁并返回.
随机推荐
- python中pygame模块用法实例
- mysql 数据插入优化方法
- Vue项目webpack打包部署到服务器的实例详解
- 详解vuelidate 对于vueJs2.0的验证解决方案
- JavaScript常用全局属性与方法记录积累
- angular学习之ngRoute路由机制
- VBScript提交表单提示-对象不支持此属性或方法
- vbs 解析json jsonp的方法
- linux vps服务器常用服务iptables策略
- java 删除文件夹中的所有内容而不删除文件夹本身的实例
- .net自定义事件示例分享
- php类的定义与继承用法实例
- Python 的 Socket 编程
- linux下安装php的memcached客户端
- php中__destruct与register_shutdown_function执行的先后顺序问题
- PHP扩展模块Pecl、Pear以及Perl的区别
- AJAX根据城市名,自动完成相应的城市信息
- 页面自动刷新,不用按回车键来提交数据!
- java实现遍历Map的方法
- cnblogs 代码高亮显示后的代码复制问题解决实现代码
