匿名内部类完成生产者和消费者
public class demos{
public static void main(String[] args) {
MyStack ms=new MyStack();
Thread t1=new Thread(){
public void run() {
for(char c='A';c<='Z';c++){
ms.push(c+"");
}
}
};
Thread t2=new Thread(){
public void run() {
for(int i=0;i<26;i++){
ms.poll();
}
}
};
t1.start();
t2.start();
}
}
class MyStack{
private String[] values={"","","","",""};
private int size=0;
public synchronized void push(String s){
this.notifyAll();
while(values.length==size){
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(s+"入栈");
values[size]=s;
size++;
}
public synchronized void poll(){
this.notifyAll();
while(size==0){
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(values[size-1]+"出栈");
values[size-1]="";
size--;
}
}
高级多线程
线程池概念:
现有问题:
线程是宝贵的内存资源、单个线程约占1MB空间,过多分配易造成内存溢出。
频繁的创建及销毁线程会增加虚拟机回收频率、资源开销,造成程序性能下降。 (更多…)
多线程
要想了解线程必须先了解进程
什么是进程?
程序是禁止的,只有真正运行程序,才被称为进程。
单CPU在任何时间点上,只能运行一个进程;宏观并行,围观串行。 (更多…)
异常课后习题
1.填空
java中所有的错误都继承自Throwable类;
在该类的子类中,Error类表示严重的底层错误,对于这类错误一般处理的方法是重新书写重新编译重新运行;Exception类表示例外、异常 (更多…)
异常
什么是异常?
概念:程序在运行过程中出现的特殊情况。
异常处理的必要性:任何程序都可能存在大量的位置问题、错误,如果不对这些问题进行正确处理,则可能程序中断,造成不必要的损失。
异常的分类
Throwable:可抛的,一切错误或异常的父类,位于java.lang包中
|-Error:JVM、硬件、执行逻辑错误,不能手动处理
|-Exception:程序在运行和配置中产生的问题,可处理。
||-RuntimeException:运行时异常,可处理,可不处理
||-CheckedException:受查异常,必须处理 (更多…)
Map体系集合
Map结构
interface Map
|-Class HashMap
|-interface SortedMap
||-class TreeMap
Map结构的特点:
1.用于存储任意键值对(Key–value)
2.键:无序,无下标,不允许重复(唯一)
3.值:无序,无下标,允许重复 (更多…)
集合框架之Set集合
Set子接口
特点:无序、无下标,元素不可重复
方法:全部继承自Collection中的方法
Set实现类
HashSet
基于Hashcode实现元素不重复
当存入元素的哈希码相同时,会调用equals进行确认,如结果为true,则拒绝后者存入 (更多…)
集合框架之List集合
什么是集合
概念:对象的容器,存储对象的对象,可代替数组
特点:容器的工具类,定义了对多个对象进行操作的常用方法
位置:java.util.*;
collection体系集合
interface collection该体系结构的根接口,代表一组对象,称为集合
|-interface List:List接口的特点:有序有下标,元素可重复
|–class ArrayList、Class LinkedList、Class Vector
|-interface Set:Set接口的特点:无序无下标元素不可重复
|–Class HashSet、Class SortedSet、Class TreeSet (更多…)




