• 面试(5)


    线程中的sleep()和wait方法的区别是什么?

    1、来自的类不同(重要)

    • sleep()方法是线程类(Thread)的方法;

    • wait()方法是Object类里的方法;

    2、捕获异常不同

    • sleep()方法必须捕获异常

    • wait()方法不需要捕获异常

    3、使用范围不同

    • sleep()方法可以在任何地方使用

    • wait()方法只能在同步控制方法或者同步控制块里面使用

    4、是否释放锁不同(重要)

    • 调用sleep()方法的时候,不会释放对象锁,等待阻塞的时间到了线程自动恢复运行状态

    • 调用wait()方法的时候,会释放了对象锁(使得其他线程可以使用同步控制块或者方法 ),通过调用notify()唤醒线程才能恢复到运行状态

    注:1、每个对象都有一个锁来控制同步访问。Synchronized关键字可以和对象的锁交互,来实现线程的同步。

           2、sleep不出让系统资源;wait是进入线程等待池等待,让出系统资源,其他线程可以占用CPU。一般wait不会 加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待其他线程调用notify/notifyAll唤 醒等待池中的所有线程,才会进入就绪队列等待OS分配系统资源。sleep(milliseconds)可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断。

           3、Object类常用的方法有哪些?

    ToString()、equals、wait()、notify()、hashcode()

    java中如何创建线程池?线程池的作用是什么?

    1、如何创建线程池:(说出一两个即可)

    • newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。

    • newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。

    • newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

      ExecutorService cachedThreadPool = Executors.newCachedThreadPool();

      ExecutorService fixedThreadPool = Executors.newFixedThreadPool(20);

      ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);

      ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();

    2、线程池作用(好处):

    管理线程和线程复用,减少因频繁创建和销毁线程所消耗的内存,从而实现提高程序执行效率。

    数据库配置文件常用的配置参数有哪些?DBCP是什么?为什么要用BCP?

    1、数据库配置文件常用的配置参数:

    Username、 password、 url、 driver 、initSize、 MaxSize等

    2、DBCP:

    • DBCP:数据库连接池,是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。

    • DBCP是Java开源连接池中最常用的一种,它一般应用在数据库使用非常频繁的系统中,可以处理数据库连接的大量请求,是做大型站点的首选数据库配置。

    3、使用DBCP好处:

    DBCP用来管理连接和复用连接,减少因频繁创建和销毁连接对象所消耗的内存,最终达到提高程序的执行效率。

    数据库中对重复的数据进行去重,如何实现?

    使用distinct关键字实现去重操作

    mysql中如何实现分页查询

    使用limit关键字:limit?,?

    第一个参数:跳过多少条(即偏移量),第二个参数:每页显示的数据

    例如:一页10条数据,要查询第三页的数据?

    limit20,10

    如何优化数据库的查询效率?

    --适当添加索引(索引的作用就是提高查询效率的)

    --尽量使用主键查询(最好减少外键关联查询)

    --优化sql语句

    --使用redis缓存数据库(优点:读写效率10万次/秒 )

    Mysql使用二维表存储数据 关系型数据库

    Redis使用key – value存储数据 非关系型数据库

  • 相关阅读:
    Centos5.x 更换yum源
    前端常用的数据处理(基础版)
    动态库和静态库的区别是什么(转)
    java8.0_181b13 异常信息
    sql server 跨数据库调用存储过程
    基于51单片机的简易“视频播放器”
    https还安全吗 https抓包原理 https抓包工具
    hash 碰撞的2种解决办法
    商品秒杀提高QPS解决方案
    指针压缩原理和为什么指针压缩只能压缩3位
  • 原文地址:https://www.cnblogs.com/bzbz/p/11580000.html
Copyright © 2020-2023  润新知