专栏名称: xcbeyond
架构师
目录
相关文章推荐
51好读  ›  专栏  ›  xcbeyond

面试常见问题之线程部分 | Java Debug 笔记

xcbeyond  · 掘金  ·  · 2021-05-15 16:12

正文

阅读 53

面试常见问题之线程部分 | Java Debug 笔记

本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看< 活动链接 >

下面将面试中常见问题进行汇总,关于线程部分常遇见的问题如下:

1、使用过线程么?线程如何实现?

通过继承 Thread 类、实现Runnable 接口,在run方法中实现功能或业务逻辑。

2、线程中start和run方法有什么区别和联系?

调用start方法可启动线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法,即:线程要执行的内容。

而run方法只是线程里面一个普通方法的调用而已,还是在主线程里执行。如果直接调用run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到写线程的目的。

public static void main(String args[]) {
 
        Thread t = new Thread() {
 
            public void run() {
 
                pong();
 
            }
 
        };
 
        t.start();
 
        System.out.print("ping");
 
 }
 
 
public static void pong() {
 
        System.out.print("pong");
 
 }
复制代码

输出结果: pingpong

public static void main(String args[]) {
 
        Thread t = new Thread() {
 
            public void run() {
 
                pong();
 
            }
 
        };
 
        t.run();
 
        System.out.print("ping");
 
    }
 
 
 
public  static void pong() {
 
        System.out.print("pong");
 
 }
复制代码

输出结果: pongping

通过以上两个程序实例,可以很容易的区分出start()方法和run()方法的区别:

  • t.start(); 该行代码相当于是启动线程
  • t.run(); 该行代码相当于是使用t这个类中的run方法而已。

3、了解过线程死锁么?如何有效的避免线程死锁?

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外界作用下,它们都将无法进行下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。







请到「今天看啥」查看全文


推荐文章
柳林大小事  ·  柳林汝子两年没回家,后悔大了!
8 年前
哎咆科技  ·  世界上最小的手机!
7 年前
格上私募圈  ·  2016年银行理财年度报告
7 年前