摘要:在Java 5.0之前启动一个任务是通过调用Thread类的start()方法来实现的,任务的提于交和执行是同时进行的,如果你想对任务的执行进行调度或是控制 同时执行的线程数量就需要额外编写代码来完成。5.0里提供了一个新的任务执行架构使你可以轻松地调度和控制任务的执行,并且可以建立一个类似数据库连接 池的线程池来执行任务。这个架构主要有三个接口和其相应的具体类组成。这三个接口是Executor, ExecutorService、ScheduledExecutorService,让我们先用一个图来显示它们的关系:
阅读全文
05 2012 档案
摘要:Callable与 Future 两功能是Java在后续版本中为了适应多并法才加入的,Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其他线程执行的任务。
Callable的接口定义如下;
阅读全文
摘要:新建文本,将下面的文字复制保存为一reg文件,双击即可解决Windows Registry Editor Version 5.00;PNG file association fix for Windows XP;Created on May 17, 2007 by Ramesh Srinivasan[HKEY_CLASSES_ROOT\.PNG]"PerceivedType"="image"@="pngfile""Content Type"="image/png"[HKEY_CLASSES_RO
阅读全文
摘要:如题保存的网页为*.mht格式,用IE打开则显示导航取消的空白页面,用其它浏览器则不停的弹出“下载文件到临时文件夹”的窗口,更要命的是打开诸如瑞星卡卡等基于MHT的工具软件时,会一直弹IE下载窗口直到死机。
原因是.mht文件打开方式关联错误造成的
新建文本,将下面的文字复制保存,注意第一行 " Windows… ” 和第二行间的空行不能掉,将该文本文件后缀由 .txt 改为 .reg 后,双击该文件导入注册表即可
Windows Registry Editor Version 5.00
阅读全文
摘要:JDK1.0定义了stop和suspend方法,前者用来直接总之线程,后者会阻塞线程直到另一个线程调用resume.
stop和suspend都有一些共同的点:都试图专横的控制一个给定线程的行为.
阅读全文
摘要:java的锁机制现行的有synchronized和Lock。synrhronized关键字简洁、清晰、语义明确。其应用层的语义是可以把任何一个非null对象作为”锁”,当synchronized作用在方法上时,锁住的便是对象实例(this);当作用在静态方法时锁住的便是对象对应的Class实例,因为Class数据存在于永久带,因此静态方法锁相当于该类的一个全局锁;当synchronized作用于某一个对象实例时,锁住的便是对应的代码块。synrhronized锁主要通过Lock-Free的队列,放弃了些公平性,通过自旋锁提高了瞬时的吞吐量。 下面是JAVA模拟银行账户存储和转移的实例: 1..
阅读全文
摘要:在多线程中可以很方便的控制多个弹跳球的移动,当球体碰到窗体边界便折回。用Thread.start启动一个新的线程。 1 /** 2 @version 1.32 2004-07-27 3 @author Cay Horstmann 4 */ 5 6 import java.awt.*; 7 import java.awt.event.*; 8 import java.awt.geom.*; 9 import java.util.*; 10 import javax.swing.*; 11 12 /** 13 Shows an animated bounci...
阅读全文
摘要:二叉树是每个节点最多有两个子树的有序树。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。在JAVA中可以用类很方便的实现二叉树: 1 package MyTree; 2 3 //tree.java 4 //demonstrates binary tree 5 //to run this program: C>java TreeApp 6 import java.io.*; 7 import java.util.*; // for Stack class 8 //...
阅读全文
摘要:JAVA不允许一个类继承自多个类,为了解决这个问题,JAVA提供了java.lang.Runnable接口,它有一个run()方法: 1 package runimpl; 2 public class Machine implements Runnable{ 3 private int a=0; 4 public void run(){ 5 for(a=0;a<50;a++){ 6 System.out.println(Thread.currentThread().getName()+":"+a); 7 try{ 8 Thread.sle...
阅读全文
摘要:JAVA后台线程的特点是只有所有的前台线程结束运行,后台线程才能结束,后台线程可用setDaemon()进行设置: 1 package withdaemon; 2 3 public class Machine extends Thread { 4 private int a; 5 private static int count; 6 7 public void start() { 8 super.start(); 9 Thread deamon=new Thread() {10 public void run...
阅读全文
摘要:JAVA中当前运行的线程可以调用另一个线程的join()方法,使当前的线程转到阻塞状态,等待另一个线程运行完毕再继续运行,它才运行: 1 package join; 2 public class Machine extends Thread{ 3 public void run(){ 4 for(int a=0;a<50;a++) 5 System.out.println(getName()+":"+a); 6 } 7 public static void main(String args[])throws Exception{ 8 Machine ma...
阅读全文
摘要:可以用setPriority来设置线程的优先级,getPriority取得线程的优先级: 1 package priority; 2 3 import sharevar.Machine; 4 5 public class priority extends Thread { 6 private static StringBuffer log=new StringBuffer(); 7 private static int count=0; 8 9 public void run() {10 for (int a=0;a<20;a++) {11...
阅读全文
摘要:JAVA的sleep方法让出CPU,给其他线程运行机会: 1 package synsleep; 2 public class Machine implements Runnable { 3 private int a=1; //共享数据 4 public void run() { 5 for(int i=0;i<1000;i++){ 6 synchronized(this){ 7 a+=i; 8 try{ 9 Thread.sleep(500); //给其他线程运行的机会10 }catch(In...
阅读全文
摘要:JAVA的线程让步yield的使用方法: 1 package suspend; 2 public class Machine extends Thread{ 3 private int a; //共享数据 4 5 public void run(){ 6 for(int i=0;i<1000;i++){ 7 synchronized(this){ 8 a+=i; 9 yield(); //给其他线程运行的机会10 a-=i;11 }12 }13 }14 15 public synchroniz...
阅读全文
摘要:JAVA中共享变量实例: 1 package sharevar; 2 public class Machine extends Thread{ 3 private int a=0; //实例变量 4 public void run(){ 5 for(a=0;a<50;a++){ //使用Machine对象的实例变量a 6 System.out.println(currentThread().getName()+":"+a); 7 try{ 8 sleep(100); 9 }catch(InterruptedExcepti...
阅读全文
摘要:二叉排序树(Binary Sort Tree)又称二叉查找树。 它或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树;在Java中构造二叉排序树实例如下:// tree.java// demonstrates binary tree// to run this program: C>java TreeAppimport java.io.*;import java.util.*; // for Stack ...
阅读全文
摘要:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一
阅读全文
摘要:到目前为止,我们仅仅使用了最简单的语法定义枚举类型,其实枚举类型可以做更多的事情,在Tiger的定义中,枚举是一种新的类型,允许用常量来表示特定的数据片断,它能胜任普通类的大部分功能,如定义自己的构造函数、方法、属性等等。这也是Java与C/C++或是Pascal中不同的地方,在那两种语言中枚举类型代表的就是一些int类型的数字,但在Java中枚举更像是一个类。 1 import java.util.*; 2 3 public class EnumTest { 4 5 /** 6 * @param args 7 */ 8 public static v...
阅读全文
摘要:双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。下面是在JAVA中实现双向链表 1 // firstLastList.java 2 // demonstrates list with first and last references 3 // to run this program: C>java FirstLastApp 4 //////////////////////////////////////////////////////
阅读全文
摘要:JAVA用栈解析数学表达式(如4*(7+4)): 1 // brackets.java 2 // stacks used to check matching brackets 3 // to run this program: C>java bracketsApp 4 import java.io.*; // for I/O 5 //////////////////////////////////////////////////////////////// 6 class StackX 7 { 8 private int maxSiz...
阅读全文
摘要:JAVA中的队列实现: 1 // Queue.java 2 // demonstrates queue 3 // to run this program: C>java QueueApp 4 //////////////////////////////////////////////////////////////// 5 class Queue 6 { 7 private int maxSize; 8 private long[] queArray; 9 private int front;10 private int rear;11 private in...
阅读全文
摘要:在JAVA进行插入排序的代码: 1 // insertSort.java 2 // demonstrates insertion sort 3 // to run this program: C>java InsertSortApp 4 //-------------------------------------------------------------- 5 class ArrayIns 6 { 7 private long[] a; // ref to array a 8 private int nElems; ...
阅读全文
摘要:由于JAVA中没有结构体,所以必须用类来模拟,如下所示: 1 package LinkedList; 2 3 //linkList.java 4 //demonstrates linked list 5 //to run this program: C>java LinkListApp 6 //////////////////////////////////////////////////////////////// 7 class Link { 8 public int iData; // data item 9 public double dData; // data i...
阅读全文
摘要:可以用JAVA进行选择排序: 1 // selectSort.java 2 // demonstrates selection sort 3 // to run this program: C>java SelectSortApp 4 //////////////////////////////////////////////////////////////// 5 package SelectSortApp; 6 7 class ArraySel 8 { 9 private long[] a; // ref to array a10 pri...
阅读全文
摘要:JAVA的一维数组的声明方式:type var[]; 或type[] var;声明数组时不能指定其长度(数组中元素的个数),Java中使用关键字new创建数组对象,格式为:数组名 = new 数组元素的类型 [数组元素的个数]// orderedArray.java// demonstrates ordered array class// to run this program: C>java OrderedApp////////////////////////////////////////////////////////////////class OrdArray { privat.
阅读全文