线程、多线程和线程池面试专题.docxVIP

  • 5
  • 0
  • 约5.85千字
  • 约 15页
  • 2019-03-18 发布于江苏
  • 举报
线程、多线程和线程池面试专题 1、开启线程的三种方式? 1)继承Thread类,重写run()方法,在run()方法体中编写要完成的任务 new Thread().start(); 2)实现Runnable接口,实现run()方法 new Thread(new MyRunnable()).start(); 3)实现Callable接口MyCallable类,实现call()方法,使用FutureTask类来包装Callable对象,使用FutureTask对象作为Thread对象的target创建并启动线程;调用FutureTask对象的get()方法来获得子线程执行结束后的返回值。 FutureTaskInteger ft = new FutureTaskInteger(new MyCallable()); new Thread(ft).start(); 2、run()和start()方法区别 run()方法只是线程的主体方法,和普通方法一样,不会创建新的线程。只有调用start()方法,才会启动一个新的线程,新线程才会调用run()方法,线程才会开始执行。 3、如何控制某个方法允许并发访问线程的个数? 创建Semaphore变量,Semaphore semaphore = new Semaphore(5, true); 当方法进入时,请求一个信号,如果信号被用完则等待,方法运行

文档评论(0)

1亿VIP精品文档

相关文档