Java基础面试题31-35

31:线程的 run()和 start()有什么区别?

  • run():当一个线程调用run方法的时候,它会被当做是一个普通方法,在程序中任然只有main方法一个主线程,程序按照顺序执行
  • start():当线程调用start()的时候,代表启动一个线程,然后再由jvm去调用run()方法执行,实现多线程

总结:run方法是同步,单线程 start()是异步,多线程

32:创建线程池有哪几种方式?

Java通过Executors创建4种线程池的方式:

1.newCachedThreadPool():创建缓存线程池,线程池无限大,当执行一个新的线程时,如果有空闲线程直接调用,没有就创建一个新的
2.newFixedThreadPool():创建并发线程池,可控制并发执行多个线程,超过并发数排队等待
3.newScheduledThreadPool():创建定时线程池:支持定时和循环执行任务
4.newSingleThreadExecutor():创建单列线程池,支持运行一个线程,保证了线程执行的顺序

33.javac 生成的class字节码里面是什么内容,有什么特点,常量是在里面怎么定义编排的

生成的16进制的class源码
CA FE BA BE 00 00 00 34  00 20 07 00 02 01 00 18
63 6F 6D 2F 69 74 2F 64  6F 6D 61 69 6E 2F 50 72
6F 64 75 63 74 44 69 72  07 00 04 01 00 10 6A 61
76 61 2F 6C 61 6E 67 2F  4F 62 6A 65 63 74 01 00
02 69 64 01 00 13 4C 6A  61 76 61 2F 6C 61 6E 67
2F 49 6E 74 65 67 65 72  3B 01 00 04 6E 61 6D 65
01 00 12 4C 6A 61 76 61  2F 6C 61 6E 67 2F 53 74
72 69 6E 67 3B 01 00 06  3C 69 6E 69 74 3E 01 00
03 28 29 56 01 00 04 43  6F 64 65 0A 00 03 00 0D
0C 00 09 00 0A 01 00 0F  4C 69 6E 65 4E 75 6D 62
65 72 54 61 62 6C 65 01  00 12 4C 6F 63 61 6C 56
61 72 69 61 62 6C 65 54  61 62 6C 65 01 00 04 74
68 69 73 01 00 1A 4C 63  6F 6D 2F 69 74 2F 64 6F
6D 61 69 6E 2F 50 72 6F  64 75 63 74 44 69 72 3B
01 00 05 67 65 74 49 64  01 00 15 28 29 4C 6A 61

1.魔数:区分文件类型的标志,通常在class文件的头部,CAFE BABE标示,(不用后缀名区分,后缀名不安全)
2.版本号:前面四个数{00 00} 次版本号,后面四个数[00 34]代表主版本号 转换成10进制为52(可以看出是jdk1,8)
3.常量池计数器; {00 20} 统计常量池中一共有多少个常量,计数重1开始,统计32个,但一共有31个常量
4.常量池:
1.常量池分为字面常量(final修饰)和字符常量(类,数组,接口)
2.常量池中每一中常量都是一个表,jdk1.7一共有14种表

注意:Java中如果定义了超过64k的变量和方法名将无法编译

34:线程池有哪几种状态?

线程池的状态:running,shutdown,stop,tidying,terminated

1.running:线程池正在运行状态,线程池创建好就处于运行状态

2.shutdown:中止状态,不能添加新的任务,可以处理正在运行的任务,running调用shutdown()方法进入中止状态,

3.stop:停止状态,不能添加新任务,不能执行任务,调用shutdown方法进入stop状态

4.tidying:整理状态,stop线程池没有任务运行会进入tidying状态,shutdown,等待队列为空,没有正在执行的任务,会进入tidying

5.terminated:死亡状态:tidying调用terminated()方法进入terminated状态

35.线程池中 submit()和 execute()方法有什么区别?(同面试题27有点类似)

1.接收参数不同
2.submit()有返回值(可以监控线程执行结果)
3.submit会抛出异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值