1.FutureTask类有什么作用?它实现了哪些接口?
FutureTask可用于异步获取执行结果或取消执行任务的场景。通过传入Runnable或者Callable的任务给FutureTask,直接调用其run方法或者放入线程池执行,之后可以在外部通过FutureTask的get方法异步获取执行结果,因此,FutureTask非常适合用于耗时的计算,主线程可以在完成自己的任务后,再去获取结果。另外,FutureTask还可以确保即使调用了多次run方法,它都只会执行一次Runnable或者Callable任务,或者通过cancel取消FutureTask的执行等。
FutureTask实现了Runnable和Future接口。
2.volatile关键字有什么作用?
volatile 关键字是 Java 虚拟机提供的轻量级的同步机制,使用volatile可能比锁更快,但在某些情况下它不起作用。
用volatile修饰的变量在线程 *** 作时会强制对其在缓存的修改 *** 作立刻写入主存。
3.Java提供了哪些同步机制来实现互斥?
Java 提供了两种锁机制来控制多个线程对共享资源的互斥访问,第一个是 JVM 实现的 synchronized,而另一个是 JDK 实现的 ReentrantLock。
4.Callable接口和Runnable接口有什么不同?
Runnable:无返回值且不能抛出异常;
Callable:可以有返回值(泛型)和抛出异常;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)