多线程-面试题

 

 

1.谈谈你对程序,进程,线程的理解

程序概念:程序是静态的态代码的集合 ,用某种语言编写的一组指令,用于处理某个功能的应用软件

进程概念:进程是程序启动后的动态状态,是指正在运行的过程,有着他自 身的产生,存在,消亡的过程--生命周期

说明:进程是作为资源分配的单位,系统在运行时 会为每个进程分配不同的内存地址空间

线程概念:线程是进程中的单一支线,是程序内部其中的一条执行路径

每个线程拥有自己的独立的栈 和程序计数器

多个线程 共享同一个进程的结构:方法区,堆

若一个进程同一时间并行多个线程 就是支持多线程

线程是作为调度和执行的单位,每个线程拥有独立的运行栈和程序计数器,线程之间的切换开销小

一个进程中多个线程可以共享相同的内存地址空间,他们可以从同一堆中分配对象,可以访问相同的变量和对象。这就使得线程之间的通信和共享数据非常的便捷高效,但是多个线程的操作 共享系统资源可能就会带来安全隐患

 

2.代码完成Thread的方式创建分线程 并遍历100以内的自然数

public class MyThreadKS2 extends Thread {
   public MyThreadKS2(String name) {
       super(name);
  }

   @Override
   public void run() {
       for (int i = 0; i < 100; i++) {
           System.out.println(getName() + i);
      }
  }
}

class MyThreadKS2Test {
   public static void main(String[] args) {
       MyThreadKS2 ks2 = new MyThreadKS2("Thread自然数线程:");
       ks2.start();
  }
}

3.代码完成Runnable的方式创建分线程 并遍历100以内的自然数

public class MyThreadKS implements Runnable {
   @Override
   public void run() {
       for (int i = 1; i <= 100; i++) {
           System.out.println(Thread.currentThread().getName() + i);
      }
  }
}

class MyThreadKsTest {
   public static void main(String[] args) {
       MyThreadKS ks = new MyThreadKS();
       Thread t1 = new Thread(ks);
       t1.setName("Runnable自然数线程:");
       t1.start();
  }
}

4.对比两种创建方式

1.继承Thread的方式呢有单继承的局限性无法继承其他父类, 而实现Runnable可以多实现并继承其他您需要的父类 在可用性上 后者更具有优势

2.在Runnable有着天生的资源数据共享性,多个线程可以同时访问一个资源

相同点都是需要重写run()

 

5.谈谈你对idea中的project和module的理解

project相当于eclipseworkspace

module相当于eclipseproject

ideaproject只能存在一个 若需要多个项目 则需要打开多个窗口

 

posted @ 2020-08-15 20:21  HunterEasyTouch  阅读(157)  评论(0)    收藏  举报