1.画图说明线程的生命周期,以及各状态切换使用到的方法等
状态,方法
2.同步代码块中涉及到同步监视器和共享数据,谈谈你对同步监视器和共享数据的理解,以及注意点。
synchronized(同步监视器){
//操作共享数据的代码 (不能包括多了,也不能包括少了)
}
3. sleep()和wa面试题:sleep() 和 wait()的异同?
* 1.相同点:一旦执行方法,都可以使得当前的线程进入阻塞状态。
* 2.不同点:1)两个方法声明的位置不同:Thread类中声明sleep() , Object类中声明wait()
* 2)调用的要求不同:sleep()可以在任何需要的场景下调用。 wait()必须使用在同步代码块或同步方法中
* 3)关于是否释放同步监视器:如果两个方法都使用在同步代码块或同步方法中,sleep()不会释放锁,wait()会释放锁。it()的区别
4. 写一个线程安全的懒汉式
class Bank{
private Bank(){}
private static Bank instance = null;
public static Bank getInstance(){
//方式一:效率稍差
// synchronized (Bank.class) {
// if(instance == null){
//
// instance = new Bank();
// }
// return instance;
// }
//方式二:效率更高
if(instance == null){
synchronized (Bank.class) {
if(instance == null){
instance = new Bank();
}
}
}
return instance;
}
}
5. 创建多线程有哪几种方式:4种
继承Thread类
实现Runnable接口
实现Callable接口
线程池(响应速度提高了,提高了资源的重用率,便于管理)
java day019 多线程课后作业
猜你喜欢
转载自blog.csdn.net/weixin_46381608/article/details/107905704
今日推荐
周排行