多线程-面试题
1.谈谈你对程序,进程,线程的理解
程序概念:程序是静态的态代码的集合 ,用某种语言编写的一组指令,用于处理某个功能的应用软件
进程概念:进程是程序启动后的动态状态,是指正在运行的过程,有着他自 身的产生,存在,消亡的过程--生命周期
说明:进程是作为资源分配的单位,系统在运行时 会为每个进程分配不同的内存地址空间
线程概念:线程是进程中的单一支线,是程序内部其中的一条执行路径
每个线程拥有自己的独立的栈 和程序计数器
多个线程 共享同一个进程的结构:方法区,堆
若一个进程同一时间并行多个线程 就是支持多线程
线程是作为调度和执行的单位,每个线程拥有独立的运行栈和程序计数器,线程之间的切换开销小
一个进程中多个线程可以共享相同的内存地址空间,他们可以从同一堆中分配对象,可以访问相同的变量和对象。这就使得线程之间的通信和共享数据非常的便捷高效,但是多个线程的操作 共享系统资源可能就会带来安全隐患
2.代码完成Thread的方式创建分线程 并遍历100以内的自然数
public class MyThreadKS2 extends Thread {
public MyThreadKS2(String name) {
super(name);
}
3.代码完成Runnable的方式创建分线程 并遍历100以内的自然数
public class MyThreadKS implements Runnable {
4.对比两种创建方式
1.继承Thread的方式呢有单继承的局限性无法继承其他父类, 而实现Runnable可以多实现并继承其他您需要的父类 在可用性上 后者更具有优势
2.在Runnable有着天生的资源数据共享性,多个线程可以同时访问一个资源
相同点都是需要重写run()
5.谈谈你对idea中的project和module的理解
project相当于eclipse的workspace
module相当于eclipse的project
idea的project只能存在一个 若需要多个项目 则需要打开多个窗口