java day019 多线程课后作业

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接口
线程池(响应速度提高了,提高了资源的重用率,便于管理)

猜你喜欢

转载自blog.csdn.net/weixin_46381608/article/details/107905704
今日推荐