Question1:synchronized 与 Lock的异同?
相同:二者都可以解决线程安全问题
不同:synchronized机制在执行完相应的同步代码以后,自动的释放同步监视器
Lock需要手动的启动同步(lock(),同时结束同步也需要手动的实现(unlock())
Question2:Java是如何解决线程安全问题的,有几种方式?并对比几种方式的不同
java利用线程的同步,来线程安全解决问题。主要的方式为两种:sychronized方式,和lock方式。其中synchronized方式,包含同步代码块 和 同步方法。
Question3:创建多线程有哪几种方式:4种
1.继承Thread类2.实现Runnable接口3.实现Callable接口4线程池(响应速度提高了,提高了资源的重用率,便于管理)
Question4:sleep() 和 wait()的异同?
1.相同点:一旦执行方法,都可以使得当前的线程进入阻塞状态。
2.不同点:1)两个方法声明的位置不同:Thread类中声明sleep() , Object类中声明wait()
2)调用的要求不同:sleep()可以在任何需要的场景下调用。 wait()必须使用在同步代码块或同步方法中
3)关于是否释放同步监视器:如果两个方法都使用在同步代码块或同步方法中,sleep()不会释放锁,wait()会释放锁。



