1.FutureTask类有什么作用?它实现了哪些接口?Callable接口和Runnable接口有什么不同?
作用:Future Task实现了RunnableFuture接口,RunnableFuture继承了Runnable接口和Future接口,而FutureTask实现了RunnableFuture接口。所以它既可以作为Runnable被线程执行,又可以作为Future得到Callable的返回值。实现接口:RunnableFuture接口。Callable接口和Runnable接口的不同:Runnable接口没有返回值,Callable接口是一个泛接口,返回传进来的数据类型。
2.请查阅JDK自学线程池的相关类,如ThreadPoolExecutor构造器各个参数的意义,利用线程池编写多线程程序。
3.volatile关键字有什么作用?
作用:指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。
4.Java提供了哪些同步机制来实现互斥?
Java引入了对象监视器来保证共享数据操作的同步性。任何一个对象都可作为一个监视器,关键字synchronized修饰某个对象后,该对象就成为监视器。synchronized的三种用法:synchronized代码块:监视器就是指定的对象;synchronized方法:监视器就是this对象;synchronized静态方法:监视器就是相应的Class对象。
5.编写Java程序模拟烧水泡茶最优工序。
6.编写一个多线程Java应用模拟生产者/消费者模型,各产生10个生产者和消费者线程,共享一个缓冲区队列(长度自设),生产者线程将产品放入到缓冲区,消费者线程从缓冲区取出产品。
7.阅读公众号“码农翻身”的文章---《我是一个线程》。