Java面试题(五)线程及集合补充

1,一个进程就是一个应用程序。一个线程就是一个进程中运行的最小单元。

 一个进程可以包括多线程。

餐馆(进程)。
 主线程。
 服务员(线程)
 服务员(线程)
 服务员(线程)
 服务员(线程)

加塞,让步,守护,睡觉,打断,设置优先级。。

2,线程的生命周期?
新建,就绪,运行,阻塞,死亡

3,线程创建有几种方式?
答:三种。extends Thread,implements Runnable,线程池。

继承是否要满足一种关系?is-a关系?
子类 is a 父类。

4,不同线程创建对应的start方法。
  a继承Thread,再直接start.
 
  b实现Runnable时一定在类中编写了run方法.简单说就是定义线程要执行的任务
  将这个任务放在Thread的构造中。再start
 
 场景:服务器,游戏。

5,java中wait和sleep方法的不同?
答:等待时wait会释放锁,而sleep一直持有锁。
 Wait通常被用于线程间交互,sleep通常被用于暂停执行

6,对象.run是否会启动线程?
   线程的start方法,才可以启动线程,让线程就绪状态。

7,synchronized关键字。
用来给对象和方法或者代码块加锁,同一时刻最多只有一个线程执行这段代码。

8,final。三不。

9,StringBuilder,StringBuffer[synchronized],区别?
StringBuilder效率更高,线程不安全。

10,HashMap就是一个哈希表或者散列表,
散列表其实就是一个数组。数组中的每一个元素是一个单链表
--可以理解索引就是key计算的哈希值

11,对象的hashcode相同,equals相同吗?不一定。
     equals相同,hashcode肯定相同。

12,用过哪些数组?3 普通定义数组,ArrayList,(HashMap的数组结构)

原文地址:https://www.cnblogs.com/lovejoying/p/9606530.html

时间: 2024-10-07 07:00:24

Java面试题(五)线程及集合补充的相关文章

Java面试题(线程)

第一次写,写的目的就是为了帮助自己更好地查看自己学的知识,也是对自己平时学习的一些总结.可能有些地方并不是完美,覆盖的知识面不够广泛,请谅解. 问题一 线程和进程的区别: 进程:进程就是任务管理器中那些后台运行程序,进程是程序的实体. 线程:在一个完整的java程序中,开始执行是从main开始,main就是一个线程,从main开始java会同时启动垃圾回收机制,垃圾回收机制就是另一个线程.除了这两个线程,还可能存在其他线程.通过这些线程一起完成一个程序的执行. 总结:从上面来看,进程是程序的实体

Java创建多线程和线程安全集合Vector

public class Test { public static Vector<String> data = new Vector<String>(); public static void main(String[] args) { for (int i = 0; i < 100; i++) { data.add("data" + i); } for (int i = 0; i < 3; i++) { Thread t = new Thread(

Java面试题:线程的生命周期包括哪几个阶段?

面试官:您知道线程的生命周期包括哪几个阶段? 应聘者: 线程的生命周期包含5个阶段,包括:新建.就绪.运行.阻塞.销毁. 新建:就是刚使用new方法,new出来的线程: 就绪:就是调用的线程的start()方法后,这时候线程处于等待CPU分配资源阶段,谁先抢的CPU资源,谁开始执行; 运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,run方法定义了线程的操作和功能; 阻塞:在运行状态的时候,可能因为某些原因导致运行状态的线程变成了阻塞状态,比如sleep().wait()之后线程就处

JAVA面试题 启动线程是start()还是run()?为什么?

面试官:请问启动线程是start()还是run()方法,能谈谈吗? 应聘者:start()方法 当用start()开始一个线程后,线程就进入就绪状态,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行.但是这并不意味着线程就会立即运行.只有当cpu分配时间片时,这个线程获得时间片时,才开始执行run()方法.start()是方法,它调用run()方法.而run()方法是你必须重写的. run()方法中包含的是线程的主体(真正的逻辑). 继承Thread类的启动方式 publ

那些经常被问的JAVA面试题

把经常在面试中容易问到的部分进行整理! 那些经常被问的JAVA面试题系列: 那些经常被问的JAVA面试题(1)—— 集合部分 本系列全部为原创文章,如果想跟随作者的脚步,可以关注微信公众号极客原创. 免费得视频,关注公众号并且回复"spring boot",即可免费得到视频下载地址!@ 看到有些朋友回复的时候都输入“springboot”,现在回复也同样可以得到视频下载地址!@ 回复“”gailv“”,免费得概率论和数理统计视频下载地址!@ 还可以测试一下智能聊天,输入你想输入的内容,

java工程师最新面试题(线程部分)

一般来说,把正在计算机中执行的程序叫做"进程",所谓的"线程"是指"进程"中某个单一顺序的控制流. 要求读者掌握 1掌握java多线程机制 2.直到进程和线程的区别 3.掌握进程的几种状态 4.掌握使用两种方式创建进程 5.掌握线程的同步 6掌握线程不同状态之间的转化 Q 请说明进程好线程的区别 值得注意的是进程是属操作系统的 a一个程序至少有一个进程,一个进程至少有一个线程,线程的划分尺度小于进程,使用多线程程序的并发性高 b进程在执行过程中拥

Java 集合补充

集合大致可以分List,Set,Queue,Map四种体系. 集合和数组不一样,数组元素可以是基本类型的值,也可以是对象(的引用变量),集合里只能保存对象(的引用变量). 访问:如果访问List集合中的元素可以根据元素的索引,访问Map集合中的元素可以根据元素的key,访问Set集合中的元素只能根据元素本身来访问. Collection操作: public class CollectionTest { public static void main(String[] args) { Collec

java多线程(一)-五种线程创建方式

简单使用示例 Java 提供了三种创建线程的方法: 通过实现 Runnable 接口: 通过继承 Thread 类本身: 通过 Callable 和 Future 创建线程. 还有 定时器 线程池 下面第一个类给出了四种创建方式,第二个类是定时器示例. ① public class ThreadStartTest { public static void main(String[] args) throws ExecutionException, InterruptedException { S

Java笔试题解答和部分面试题

面试类  银行类的问题 问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的.比如,你在一个线程里初始化了一个HashMap然后在多个其他线程里对其进行读取,这肯定没有任何问题.有个例子就是使用HashMap来存储系统配置项.当有多于一个线程对HashMap进行修改操作的时候才会真正产生问题,比如增加.删除.更新键值对的时候.因为put()操作可以造成重新分配存储大小(re-size