Java.lang包是Java中使用最广泛的一个包,它包含很多定义的类和接口。
java.lang包包括以下这些类:
Boolean | Byte | Character | Class | ClassLoader | Compiler | Double | Enum | Float |
InheritableThreadLocal | Integer | Long | Math | Number | Object | Package | Process | ProcessBuilder |
Runtime | RuntimePermission | SecurityManager | Short | StackTraceElement | StrictMath | String | StringBuffer | StringBuilder |
System | Thread | ThreadGroup | ThreadLocal | Throwable | void |
java.lang包括以下这些接口:
Appendalbe | Comparable | Runnable | CharSequence | Iterable | Cloneable | Readable |
1、在Float和Double中提供了isInfinite()和isNaN()方法,用来检验两个特殊的double和float值:无穷值和NaN(非数字)。
2、Process抽象类。抽象的Process类封装了一个进程 process, 即一个执行程序,它主要作为对象类型的超类,该对象由Runtime类中的exec()方法创建,或由ProcessBuilder类中的start()创建。
3、Runtime类。Runtime类封装运行时的环境。一般不能实例化一个Runtime对象,但是可以通过调用静态方法Runtime.getRuntime()得到一个当前Runtime对象的引用。一旦获得当前Runtime对象的引用,就可以调用几个方法来控制Java虚拟机的状态和行为。Runtime类中比较常用的几个方法:
Process exec(String progName) throws IOException 作为一个单独的进程执行progName指定的程序。返回一个描述新进程的Process类的对象。
long freeMemory() 返回Java运行时系统可以利用的空闲内存的近似字节数。
void gc() 开始垃圾回收。
long totalMemory() 返回程序可以利用的类存总字节数。
使用exec()执行其他程序:
1 package com.hujianjie.demo; 2 3 public class EcecDemo { 4 5 /** 6 * 利用exec()打开指定的程序 7 */ 8 public static void main(String[] args) { 9 Runtime r = Runtime.getRuntime();10 Process p = null;11 try{12 p = r.exec("D:\\Program Files\\Dev-Cpp\\devcpp.exe");13 }catch(Exception e){14 e.printStackTrace();15 System.out.println("Error");16 }17 }18 19 }
4、System类。System类比较常用,其中容易忽略的是currentTimeMillis()方法是为程序执行计时;arraycopy()方法可以迅速从一个地方将任何类型的数组复制到另一个地方,其与等价的循环相比,该方法快很多;getProperty()方法可以得到不同环境变量的值。
5、Runnable接口、Thread和ThreadGroup类支持多线程编程。Runnable接口必须由一个可以启动单独的执行线程的类实现,Runnable接口只定义了一个抽象方法run(),它是线程的入口点,创建线程必须实现该方法。 Thread 类创建一个新的执行线程,它定义了下面常用的构造函数:
1 Thread()2 Thread(Runnable threadOb)3 //threadOb是实现Runnable接口的类的一个实例,它定义了线程在何处开始执行4 //线程的名称由threadName指定5 Thread(Runnable threadOb, String threadName)6 Thread(String threadName)7 Thread(ThreadGroup groupOb, Runnable threadOb)8 Thread(ThreadGroup groupOb, Runnable threadOb, String threadName)9 Thread(ThreadGroup groupOb, String threadName)
下面的程序创建了两个具有线程的线程组,演示了线程组的用法:
1 package com.hujianjie.demo; 2 3 class NewThread extends Thread{ 4 boolean suspendFlag; 5 NewThread(String threadname, ThreadGroup tgob){ 6 super(tgob,threadname); 7 System.out.println("New thread:"+this); 8 suspendFlag =false; 9 start();//Start the thread10 }11 public void run(){12 try{13 for(int i =6;i>0;i--){14 System.out.println(getName()+": "+i);15 Thread.sleep(1000);16 synchronized(this){17 while(suspendFlag){18 wait();19 }20 }21 }22 }catch(Exception e){23 System.out.println("Exception in "+getName());24 }25 System.out.println(getName()+" exiting.");26 }27 void mysuspend(){28 suspendFlag = true;29 }30 synchronized void myresume(){31 suspendFlag = false ;32 notify();33 }34 35 }36 37 public class ThreadGroupDemo {38 39 /**40 * @param args41 */42 public static void main(String[] args) {43 ThreadGroup groupA = new ThreadGroup("Group A");44 ThreadGroup groupB = new ThreadGroup("Group B");45 NewThread ob1 = new NewThread("One",groupA);46 NewThread ob2 = new NewThread("Two",groupA);47 NewThread ob3 = new NewThread("Three",groupB);48 NewThread ob4 = new NewThread("Four",groupB);49 System.out.println("\nHere is output from list():");50 groupA.list();51 groupB.list();52 System.out.println();53 System.out.println("Suspending Group A");54 Thread tga[] = new Thread[groupA.activeCount()];55 groupA.enumerate(tga);56 for(int i=0;i
运行的结果如下:
1 New thread:Thread[One,5,Group A] 2 New thread:Thread[Two,5,Group A] 3 One: 6 4 New thread:Thread[Three,5,Group B] 5 Two: 6 6 New thread:Thread[Four,5,Group B] 7 Three: 6 8 9 Here is output from list():10 Four: 611 java.lang.ThreadGroup[name=Group A,maxpri=10]12 Thread[One,5,Group A]13 Thread[Two,5,Group A]14 java.lang.ThreadGroup[name=Group B,maxpri=10]15 Thread[Three,5,Group B]16 Thread[Four,5,Group B]17 18 Suspending Group A19 Four: 520 Three: 521 Four: 422 Three: 423 Four: 324 Three: 325 Resuming Group A26 Two: 527 Waiting for threads to finish.28 One: 529 Four: 230 Three: 231 Two: 432 One: 433 Four: 134 Three: 135 Two: 336 One: 337 Four exiting.38 Three exiting.39 Two: 240 One: 241 Two: 142 One: 143 One exiting.44 Two exiting.45 Main thread exiting!