栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java第九章课后小结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java第九章课后小结

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

1.在 Java 中为了编程异步事件,我们使用 Thread 类和 Runnable 接口,它们可以开发并行应用程序。问题是在执行结束时不能返回值。因此,添加了 FutureTaks,Future 和 Callable 类,它们与以前的类具有大致相同的功能,但极大地促进了并行应用程序的开发。由于线程 Thread 只支持 Runnable 构造,于是有了 Future 可以根据 Callable 构建线程。
由于 Future 只是一个接口,无法直接创建对象,因此有了 FutureTask 。

请参阅:
Future:封装并行调用的类,可以取消任务的执行,确定执行是否已成功完成或出错,以及其他操作;
FutureTask:这是 Future 接口的实现,将在并行调用中执行。
Callable:用于实现并行执行的接口。它与 Runnable 接口非常相似,但是它不返回任何值,而 Callable 必须在执行结束时返回一个值。
ExecutorService:用于在创建线程池,开始和取消管理并行执行的线程。

创建线程的3中方式 Thread、Runnable、Callable ,其中 Callable 是有返回结果的。

2.FutureTask实现的接口:Runnable,Callable,Future。

二. Callable接口和Runnable接口有什么不同?

不同点:
1.callable的核心是call方法,允许返回值,runnable的核心是run方法,没有返回值。
2.call方法可以抛出异常,但是run方法不行。
因为runnable是java1.1就有了,所以他不存在返回值,后期在java1.5进行了优化,就出现了callable,就有了返回值和抛异常。
3.callable和runnable都可以应用于executors。而thread类只支持runnable。

相同点:
1.两者都是接口。
2.两者都需要调用Thread.start()启动线程。

2.volatile关键字有什么作用?请举例说明。

一个定义为volatile的变量表示这个变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。
精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。
例如:

class Resource implements Runnable {
 volatile public int i;                                                              
 public  Resource(int _i){
    i = _i;
 }
 public void run(){
   while(true){
     if (i>0){
        try{
             Thread.sleep(200);
      }
        catch(Exception e){}
        i--;
        System.out.println(Thread.
        currentThread().getName()+"  "+i);
     }
    else{
        System.out.println(Thread.
        currentThread().getName());
        break;
   	 }
  }
}
}
public class TestSecurity{
public static void main(String[] args){
  Resource m = new Resource(9);
  Thread t1 = new Thread(m);
  Thread t2 = new Thread(m);
  t1.start();
  t2.start();

运行结果:

3.编写Java程序模拟烧水泡茶最优工序。 4. 编写一个基于多线程的生产者/消费者Java应用,各产生10个生产者和消费者线程,共享一个缓冲区队列(长度自设),生产者线程将产品放入到缓冲区,消费者线程从缓冲区取出产品。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/362206.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号