面试官看了直呼内行,Java多线程与并发系列22道高频面试题解析

本文详细介绍了Java多线程与并发编程的22个常见面试问题,涵盖线程创建、同步机制、volatile关键字、线程安全、线程池等方面,帮助开发者在面试中脱颖而出。同时,文中分享了如何停止线程、wait和notify的区别、synchronized与ReentrantLock的对比等关键知识点。
摘要由CSDN通过智能技术生成

前言:

作为一个 Java开发人员,多线程是一个逃不掉的话题,不管是工作还是面试,但理解起来比较模糊难懂,因为多线程程序在跑起来的时候比较难于观察和跟踪。搞懂多线程并发知识,可以在面试的时候和周围人拉开差距,另外自己在编码的时候可以做到心中有数。

另外本人整理收藏了20年多家公司面试知识点整理 ,以及各种Java核心知识点免费分享给大家,我认为对面试来说是非常有用的,想要资料的话请点795983544 暗号CSDN。

在这里插入图片描述

1、Java 中实现多线程有几种方法

(1)继承 Thread 类;

(2)实现 Runnable 接口;

(3)实现 Callable 接口通过 FutureTask 包装器来创建 Thread 线程;

(4)使用 ExecutorService、Callable、Future 实现有返回结果的多线程(也就是使用了 ExecutorService 来管理前面的三种方式)。
在这里插入图片描述

2、如何停止一个正在运行的线程

(1)使用退出标志,使线程正常退出,也就是当 run 方法完成后线程终止。

(2)使用 stop 方法强行终止,但是不推荐这个方法,因为 stop 和 suspend 及 resume 一样都是过期作废的方法。

(3)使用 interrupt 方法中断线程。

class MyThread extends Thread {
   
    volatile Boolean stop = false;
    public void run() {
   
        while (!stop) {
   
            System.out.println(getName() + " is running");
            try {
   
                sleep(1000);
            }
            catch (InterruptedException e) {
   
                System.out.println("week up from blcok...");
                stop = true;
                // 在异常处理代码中修改共享变量的状态
            }
        }
        System.out.println(getName() + " is exiting...");
    }
}
class InterruptThreadDemo3 {
   
    public static void main(String[] args) throws InterruptedException {
   
        MyThread m1 = new MyThread(
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值