文章分类 - java
java
摘要:新建状态:用new语句创建的线程对象处于新建状态。就绪状态:当一个线程对象创建后,其他线程调用它的start()方法,该线程就进入就绪状态。运行状态:处于这个状态的线程占用CPU,执行程序代码。只有处于就绪状态的线程才有机会转到运行状态。阻塞状态:线程因为某些原因放弃CPU,暂时停止运行。当线程处于阻塞状态时,Java虚拟机不会给线程分配CPU,直到线程重新进入就绪状态,它才有机会转到运行状态。死亡状态:当线程执行完run()方法中的代码,或者遇到了未捕获的异常,就会退出run()方法,此时就进入死亡状态,该线程结束生命周期。程序如何干预Java虚拟机对线程的调度过程(1)调整各个线程的优先级
阅读全文
摘要:public class ThreadJoin extends Thread { public void run(){ for(int a=0;a<30;a++){ System.out.println(getName()+":"+a); } } public static void main(String[] args) { ThreadJoin tj = new ThreadJoin(); tj.setName("m1"); tj.start(); Syste...
阅读全文
摘要:public class ThreadYield extends Thread{ public void run(){ for(int a=0;a<50;a++){ yield(); System.out.println(Thread.currentThread().getName()+" : "+a); } } public static void main(String[] args) { ThreadYield t1 = new ThreadYield(); Th...
阅读全文
摘要:两者的区别有: 1、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。 2、这两个方法来自不同的类分别是Thread和Object 3、wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在 任何地方使用 synchronized(x){ x.notify() //或者wait() } 4、sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
阅读全文
摘要:public class ThreadSleep extends Thread { public void run(){ for(int a=0;a<50;a++){ try{Thread.sleep(500);}catch(InterruptedException e){} System.out.println(Thread.currentThread().getName()+" : "+a); } } public static void main(String[] args) { ...
阅读全文
摘要:public class MyRunnable implements Runnable{ int a=0; public void run(){ for(a=0;a<10;a++){ try{Thread.sleep(100);}catch(Exception e){} System.out.println(Thread.currentThread().getName()+":"+a); } } public static void main(String[] args) { MyRu...
阅读全文
摘要:public class MyThread extends Thread { public void run(){ for(int i=0;i<50;i++){ try{ Thread.sleep(100);}catch(Exception e){} System.out.println(Thread.currentThread().getName()+" : "+i); } } public static void main(String[] args) { MyThread t1 =...
阅读全文
摘要:1、java数组要求所有数据元素具有相同的数据类型。2、一旦数组的初始化完成,数组在内存中所占的空间将被固定下来,因此数组的长度将不可改变。 即使把某个数组元素清空,但它所占的空间依然被保留,依然属于该数组,数组的长度依然不变。3、定义数组 type[] arrayName;4、数组是一种引用类型的变量,因此使用它定义一个变量时,仅仅表示定义了一个引用变量(也就是定义了一个指针), 这个引用变量还未指向任何有效的内存,因此定义数组时不能指定数组的长度。 而且由于定义数组仅仅只是定义了一个引用变量,并未指向任何有效的内存空间,所以还没有内存空间来存储数组元素,因此这个数组也不能使用,只有对数组进
阅读全文
摘要:Map(映射)是一种把键对象和值对象进行映射的集合。它的每一个元素都包含一对键对象和值对象,而值对象仍可以是Map类型,依次类推,这样就形成了多级映射。向map集合中加入元素时,必须提供一对键对象和值对象,从Map集合中检索元素时,只要给出键对象,就会返回对应的值对象。以下通过Map的put(Object key,Object value)方法向集合中插入元素,通过Map 的get(Object key)方法来检索与键对象对应的值对象。Map<String ,String> map = new HashMap<String,String>();Map.put(“1”,”
阅读全文
摘要:List的主要特征是其元素以线性方式存储,集合中允许存放重复对象。List接口主要的实现类包括:ArrayList – 代表长度可变的数组。允许对元素进行快速的随机访问,但是向ArrayList中插入与删除元素的速度较慢。LinkedList – 在实现中采用链表数据结构。对顺序访问进行了优化,向List中插入和删除元素的速度较快,随机访问速度则相对较慢。随机访问是指检索位于特定索引位置的元素。LinkedList单独具有addFirst() addLast() getFirst() getLast() removeFirst() removeLast()方法,这些方法使得LinkedList
阅读全文
摘要:Set是最简单的一种集合,集合中的对象不按特定方式排序,并且没有重复对象,Set接口主要有两个实现类:HashSet和TreeSet。HashSet类按照哈希算法来存取集合中的对象,存取速度比较快。HashSet类还提供了一个子类LinkedHashSet类,它不仅实现了哈希算法,而且实现了链表数据结构,链表数据结构能提高插入和删除元素的性能。TreeSet类实现了SortedSet接口,具有排序功能。1.2.1 Set的一般用法Set集合中存放的是对象的引用,并且没有重复对象。无序的。public static void main(String[] args) { Set<String
阅读全文
摘要:在Collection接口中声明了适用于java集合(只包含Set和List)的通用方法:方法描述Boolean add(Object o)向集合中添加一个对象的引用Void clear()删除集合中的所有对象,即不再持有这些对象的引用Boolean contains(Object o)判断在集合中是否持有特定对象的引用Boolean isEmpty()判断集合是否为空Iterator iterator()返回一个Iterator对象,可用它来遍历集合中的元素Boolean remove(Object o)从集合中删除一个对象的引用Int size()返回集合中元素的数目Object[] to
阅读全文
摘要:Java数组的长度是固定的,在同一个数组中只能存放相同类型的数据。数组可以存放基本类型的数据,也可以存放引用类型的数据。在创建数组时,必须明确指定数组的长度,数组一旦创建,其长度就不能被改变。在许多应用场合,一组数据的数目是不固定的,比如一个单位的员工数目是变化的,有老的员工跳槽,也有新的员工进来。为了使程序能方便地存储和操纵数目不固定的一组数据,JDK类库提供了java集合,所有java集合类都位于java.util包中。与java数组不同,java集合中不能存放基本类型数据,而只能存放对象的引用。Java集合主要分为以下3种类型:n Set(集):集合中的对象不按特定方式排序,并且没有重复
阅读全文

浙公网安备 33010602011771号