java程序员面试笔试宝典 豆瓣_JAVA程序员面试笔试宝典3

1.什么是线程?它与进程有什么区别?为什么要使用多线程

线程是指程序在执行过程中,能够执行程序代码的一个执行单元。进程是指一段正在执行的程序。

使用多线程可以减少程序的相应时间

与进程相比,线程的创建和切换开销更小

多CPU和多核计算机本身就具有执行多线程的能力

简化程序结构,使程序便于理解和维护

2.实现同步的方式有两种,一是利用同步代码块来实现同步;另一种是利用同步方法来实现同步(Synchronized)

3.如何实现Java多线程?

继承Thread类,重写run方法(启动线程是通过调用Thread类的start()方法,调用start()方法后并不是立即执行多线程代码,而是使得该线程变为可运行态)

实现Runnable接口,并实现该接口的run()方法(创建Thread对象,用实现Runnable接口的对象作为参数实例化该Thread对象)

4.多线程同步的实现方法有哪些?

synchronized关键字(synchronized方法、synchronized代码块)

wait()方法与notify()方法

Lock接口(实现类ReentrantLock(重入锁)),提供的方法如下

lock(),以阻塞的方式获取锁

tryLock(),以非阻塞的方式获取锁,tryLock(long timeout,timeUnit unit)

5.sleep()方法与wait()方法有什么区别?

原理不同。sleep()方法是Thread()类的静态方法,它会使此线程暂停执行一段时间,而把执行机会让给其他线程,等到时间一到,此线程会自动苏醒。而wait()方法是Object类的方法,用于进程间的通信,这个方法会使当前拥有该对象锁的进程等待,直到其他线程调用notify()方法时才醒来,不过开发人员也可以给它指定一个时间,自动醒来。

对锁的处理机制不同。sleep()方法不会释放锁,而wait()方法则不同,当调用wait方法后,线程会释放掉所占用的锁。

使用区域不同。由于wait()方法的特殊意义,它必须在同步控制方法或者同步语句块中使用,而sleep()方法则可以在任何的地方使用。

6.终止线程的方法有哪些

stop()方法与suspend()方法,(使用interrupt()可以打破阻塞)

7.synchronized与lock有什么异同

f102dcee97b14e1358ee00b1a37f585c.png

7.读脏数据:一个事务读取了另一个事务尚未提交的数据,例如,当事务A与事务B并发执行时,事务A跟新后,事务B查询读取到A尚未提交的数据,此时事务A回滚,则事务B读到的数据是无效的“脏”数据

8.Class.forName的作用是什么:将类加载到JVM中,并且JVM会执行该类的静态代码段,也会返回一个Class对象。

9.PrepaerdStatement与Statement的区别:

PrepaerdStatement效率更高,预编译的,在缓冲区中,是可以重复使用的,能够有效提高系统性能。

PrepaerdStatement代码的可读性和可维护性更好

PrepaerdStatement安全性更好

10.getString()方法与getObject()方法有什么区别

getString()、getInt()等方法在调用时,程序会一次性地把数据都放到内存里,当数据量大到内存放不下时就会抛出异常,而使用getObject方法就不会有这种问题,因为数据不会一次性读到内存里,每次调用时会直接从数据库中获取数据,因此使用这种方法不会因为数据量过大而出错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值