Java基础面试题(二)
来源:互联网 发布:机械革命 知乎 编辑:程序博客网 时间:2024/05/21 11:07
1.垃圾回收有什么作用,什么时候进行垃圾回收?
1.垃圾回收是为了释放资源,如果不释放资源.那么可能会出现内存溢出的问题,
2.当一个类里面失去了引用,也就是没有人调用,那么这个对象就会被回收
2.如果对象的引用被置为null,那么该对象是否会立即被回收?
不会,在下一个垃圾回收周期中,对象将是可被回收的
3.线程跟进程的区别是什么?
1.进程,进程是一个执行的引用程序,
2.线程,线程是应用程序里的执行序列,一个进程可以有多个线程
线程可以称为轻量进程
4.创建线程的方式有几种?
三种
- 实现Runnable的接口
- 继承Thread类
- 使用Executor框架
开发中通常使用实现Runnable接口来创建线程,因为java中只支持单继承,在设计引用进行了单继承的情况下,这需要多继承,而java是不允许的,使用Runnable的线程池是非常高效的,也容易使用
5.说出线程所有的执行状态
- 新建(创建线程)
- 可运行(在main方法调用中,调用了start方法,然后获取到了cpu的执行权)
- 运行(获取到了执行权,开始执行)
- 阻塞(同步阻塞 加锁 ,等待阻塞 调用线程wait方法,其它阻塞调用sleep等方法)
- 死亡 线程执行完毕,被销毁
6.同步方法跟同步代码块的区别
- 同步方法默认使用class字节码对象或this作为锁,
- 同步代码块比同步方法更加细颗粒度,同步代码块可以选择用什么作为锁,封装有同步问题的一部分区域,而不是整个方法
7.什么是死锁
死锁就是俩个线程都在等待对方线程执行,从而就变成了死锁 结果就是俩个线程都无限等待下去
8.如何确保n个线程访问n个资源不会出现死锁的情况
一种非常简单的解决方法就是,设置锁的顺序,并强制设置线程按指定顺序获取锁,这样的话所有的线程都是指定顺序取锁,指定顺序解锁,就不会出现死锁的情况
9.sleep() 和 wait()的区别
1.线程的sleep方法.翻译过来是睡觉的意思,见名之意,其实就是获取到cpu然后不执行任何操作,也就相当与睡觉, 会占用cpu资源,会增加时间限制,其它线程不能进入
2.线程的wait方法,见名知意,翻译的意思是等待 ,其实就是等待使用cpu,不会执行任何操作, 不会占用cpu资源,其它线程可以进入,不会增加时间限制,
10.实现同步的方式
- .实现同步方法
其实就是用synchronized修饰的方法,可以用static修饰,如果用static修饰,那么会锁住整个类 - 实现同步代码块
其实就是使用synchronized关键字,从而锁住一块资源,
同步是一种高开销的方式,所以尽量少使用同步
通常没必要锁着整个方法,所以通常使用同快代码块即可
今天就讲那么哆啦,,明天继续抱歉
阅读全文
0 0
- Java基础 面试题二
- Java基础面试题(二)
- Java面试题大全(Java基础二)
- Java基础面试题系列二
- Java基础 常见面试题(二)
- Java基础面试题总结(二)
- Java基础面试题之二
- Java面试题-基础篇二
- java面试题二
- java面试题(二)
- java面试题二
- java面试题二
- Java面试题二
- java面试题二
- Java面试题二
- java面试题二
- Java面试题二
- java面试题二
- Shell语言
- 多线程基础01
- [算法分析与设计] leetcode 每周一题:Longest Substring Without Repeating Characters
- 【OpenCV】目标检测
- Eclipse中添加文档注释快捷键
- Java基础面试题(二)
- 在北京,年薪300000+的产品经理长啥样?
- 基础巩固--编写一个完美的equals方法
- 【C++】虚函数原理
- 2017 沈阳区域赛部分题解
- 多线程基础02
- Python3.6.1下载与安装
- CentOS6设置静态IP
- APS.NET微信分享自定义标题描述与图片