Java第九章小结

1.FutureTask类有什么作用?它实现了哪些接口?Callable接口和Runnable接口有什么不同?

FutrueTask 应用于多线程中异步处理并得到处理结果的场景

Runnable 没有返回值,而 Callable 能返回执行结果。Callable 接口实现类中的 call 方法允许异常向上抛出,可以在内部处理,try catch。但是 Runnable 接口实现类中 run 方法的异常必须在内部处理,不能抛出

2.volatile关键字有什么作用?

可以使得在多处理器环境下保证了共享变量的可见性。
禁止指令重排序优化

3.Java提供了哪些同步机制来实现互斥?

Java 提供了两种锁机制来控制多个线程对共享资源的互斥访问。一个是 JVM 实现的 synchronized,一个是 JDK 实现的 ReentrantLock。

synchronized作函数修饰符

synchronized同步程序块

synchronized修饰static方法

4.编写Java程序模拟烧水泡茶最优工序

 class MakeTea {
    public static void main(String[] args) {
        MakeTeaThread1 mk1=new MakeTeaThread1();
        mk1.start();
    }
}
 class MakeTeaThread1 extends Thread{
    private MakeTeaThread2 mk2;
 
    public MakeTeaThread1() {
        mk2=new MakeTeaThread2();
    }
 
    public void run() {
        System.out.print(this.getName()+":洗水壶->");
        try {
            Thread.sleep(1000);
        }
        catch(Exception e) {}
        System.out.println("烧水-------------------");
        System.out.print("                                     |");
        mk2.start();
        try {
            Thread.sleep(12000);
        }
        catch(Exception e) {}
        System.out.println();
        System.out.print(Thread.currentThread().getName()+":                          泡茶");
    }
}
class MakeTeaThread2 extends Thread{
    public void run() {
        System.out.println();
        System.out.print(this.getName()+":     洗茶壶->");
        try {
            Thread.sleep(1000);
        }
        catch(Exception e) {}
        System.out.print("洗茶杯->");
        try {
            Thread.sleep(2000);
        }
        catch(Exception e) {}
        System.out.println("拿茶叶------");
        System.out.print("                                     ↓");
    }
}

上一篇:给生成的面添加四至属性


下一篇:Node.js 使用饭碗警告五分钟实现电话、短信报警