金三银四马上就要到了,各位小伙伴准备的怎么样了,今天博主准备了一些开发面试题,供大家参考一下:
1.一个线程在运行时发生异常会怎样?
答:如果这个异常没有被捕获,这个线程将会停止运行。
2.什么是线程组?
答:ThreadGroup类,可以把线程归属到某一个线程组中,线程组中可以有线程对象, 也可以有线程组,组中还可以有线程,它的组织结构有点类似于树,但是它使用起来不安全。
3.Java中的volatile变量是什么?
答:volatile变量是java语言提供的一种稍弱的同步机制,它可以用来确保将变量的更新操作通知到其他的线程。
4.怎么检测一个线程是否拥有锁?
答:在 java.lang.Thread中有一个方法叫holdsLock(),如果当且仅当当前线程拥有某个具体对象的锁时,它会返回true。
有三个线程T1,T2,T3,怎么确保它们按顺序执行?
答:用线程类的join()方法在一个线程中启动另一个线程,参考代码如下:
public class TestMain {
public static void main(String[] args) throws Exception {
Thread T1 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("我是T1");
}
});
Thread T2 = new Thread(new Runnable() {
@Override
public void run() {
T1.start();
try {
T1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("我是T2");
}
});
Thread T3 = new Thread(new Runnable() {
@Override
public void run() {
T2.start();
try {
T2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("我是T3");
}
});
T3.start();
}
}
5.什么是原子操作?
答:原子操作是指一个不受其他操作影响的操作任务单元,比如i++就不是原子操作。
6.什么是synchronized关键字?
答:可参考本篇博客【synchronized关键字简析https://blog.csdn.net/weixin_38106322/article/details/104429654】
7.什么是线程池?
答:可参考本篇博客【简单了解线程池https://blog.csdn.net/weixin_38106322/article/details/104121861】
8.说说线程池创建的几种方式,以及最佳方式?
答:可参考本篇博客【为什么推荐使用ThreadPoolExecutor来创建线程池https://blog.csdn.net/weixin_38106322/article/details/104273474】
9/说说wait()和sleep()的区别?
答:可参考本篇博客【说说wait()和sleep()的区别https://blog.csdn.net/weixin_38106322/article/details/104333335】
最后
上面是我整理的一些java面试题。
各位小伙伴关注我后私信【Java】就可以免费领取哒
网友评论