Java教程

Java第九章小结

本文主要是介绍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("                                     ↓");
    }
}

这篇关于Java第九章小结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!