java并发面试题整理
Posted 享叔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java并发面试题整理相关的知识,希望对你有一定的参考价值。
1.java中有几种方法可以实现一个线程?
1).需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法;
public class MyThread extends Thread
@Override
public void run()
super.run();
System.out.println("Hello World !" + Thread.currentThread().getName());
public static void main(String[] args)
MyThread thread1 = new MyThread();
MyThread thread2 = new MyThread();
thread1.start();
thread2.start();
2).实现Runnalbe接口,重载Runnalbe接口中的run()方法;
public class MyThread implements Runnable
@Override
public void run()
System.out.println("Hello World !" + Thread.currentThread().getName());
public static void main(String[] args)
MyThread thread1 = new MyThread();
MyThread thread2 = new MyThread();
Thread t1=new Thread(thread1);
Thread t2=new Thread(thread2);
t1.start();
t2.start();
3).使用ExecutorService、Callable、Future实现有返回结果的线程.
public static void main(String[] args)
// 创建一个线程池
ExecutorService threadPool = Executors.newCachedThreadPool();
// 执行任务并获取Future对象
Future<String> future = threadPool.submit(new Callable<String>()
public String call()
return "Hello World !";
);
// 关闭线程池
threadPool.shutdown();
try
// get方法是阻塞的。即:线程无返回结果,get方法会一直等待。
System.out.println("result->" + future.get());
catch (InterruptedException | ExecutionException e)
e.printStackTrace();
2.notify()和notifyAll()有什么区别?
1).notify()方法表示,当前的线程已经放弃对资源的占有,只是让一个线程从wait中恢复过来,然后继续运行wait()后面的语句。
2).notifyAll()方法表示,当前的线程已经放弃对资源的占有,让所有的线程从wait中恢复过来,通知所有的等待线程从wait()方法后的语句开始运行。
先到这,明天我继续整理....
以上是关于java并发面试题整理的主要内容,如果未能解决你的问题,请参考以下文章