JAVA每日面经——并发编程(二)必看

👩🏽‍💻个人主页:阿木木AEcru

🔥 系列专栏:《Docker容器化部署系列》 《Java每日面筋》

💹每一次技术突破,都是对自我能力的挑战和超越。

在这里插入图片描述

一、什么是线程?什么是多线程?

线程是程序执行流的最小单元,而多线程则是指在同一个程序中,可以同时运行多个线程,每个线程独立执行不同的任务。在多线程编程中,每个线程都拥有自己的执行栈和程序计数器,但它们共享程序的内存空间和其他资源。多线程可以提高程序的并发性和性能,允许程序在同时执行多个任务的情况下更有效地利用计算资源。

二、 基础创建线程的方式

创建线程的方式最常见的有继承Thread类、实现Runnable接口、实现Callable接口等。

实现Runnable接口和实现Callable接口的区别在于一个没有返回值,一个有返回值。

↓↓↓↓下面有示例,大家可以看看↓↓↓↓↓

  • 使用继承Thread类的方式创建线程:

// 继承Thread类,重写run()方法
class MyThread extends Thread {
    public void run() {
        // 线程执行的任务
        for (int i = 1; i <= 5; i++) {
            System.out.println("线程通过继承Thread类方式执行,当前数字:" + i);
            try {
                Thread.sleep(1000); // 暂停1秒
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

public class Threadtest {
    public static void main(String[] args) {
        MyThread thread = new MyThread(); // 创建线程对象
        thread.start(); // 启动线程
    }
}
  • 使用实现Runnable接口的方式创建线程:

// 实现Runnable接口,重写run()方法
class MyRunnable implements Runnable {
    public void run() {
        // 线程执行的任务
        for (int i = 1; i <= 5; i++) {
            System.out.println("线程通过实现Runnable接口方式执行,当前数字:" + i);
            try {
                Thread.sleep(1000); // 暂停1秒
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

public class Threadtest {
    public static void main(String[] args) {
        MyRunnable runnable = new MyRunnable(); // 创建实现了Runnable接口的对象
        Thread thread = new Thread(runnable); // 创建线程对象,传入Runnable对象
        thread.start(); // 启动线程
    }
}
 
  • 使用实现Callable的方式创建线程
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureT
### 腾讯云 Java 面试经验与常见问题 #### 1. 学生信息管理系统的实现细节 在腾讯云的Java面试过程中,可能会涉及到具体项目的经验分享。例如,在构建学生信息管理系统时,使用了IDEA作为集成开发环境,并通过Java、Servlet以及JSP技术栈来完成前端交互逻辑的设计[^2]。 对于数据库操作部分,则采用了MySQL来进行数据存储和查询优化等工作;而在更新`Student`对象的信息时,定义了一个名为`Update`的方法用于处理业务需求: ```java public boolean Update(Student student) throws Exception { // 更新学生的相关信息至数据库中... } ``` 此方法接收一个`Student`类实例参数并尝试将其最新状态保存回持久化层内,期间可能抛出异常情况需由调用方捕获解决。 #### 2. 浏览器对服务器响应的处理机制 当浏览器接收到Web应用返回的数据包之后,它会依据HTTP头部字段所提供的元数据指导如何进一步动作。假如Content-Type被设置成text/html形式的话,那么渲染引擎就会依照DOM树结构逐步加载样式表单(CSS)、脚本程序(JS),以及其他资源直至整个页完全呈现出来供访问者查看[^3]。 而对于非HTML文档类型的内容——比如图像文件或多媒体流媒体链接等,则按照各自对应的MIME类别采取适当措施予以展现或是触发下载行为。 #### 3. 并发编程概念对比分析 针对多线程环境下同步控制手段的选择上,ReentrantLock相较于内置关键字`synchronized`提供了更加灵活丰富的功能特性集。前者允许程序员显式地获取锁对象、设定公平策略甚至支持条件变量等待/通知模式等功能扩展;而后者则主要依赖于隐式的进入临界区方式实现互斥访问保护机制[^4]。 至于`synchronized`的工作原理方,其本质上是在字节码层利用monitorenter指令标记一段代码区域为独占使用的入口点,任何试图执行该段落之前都须先获得关联监视器(Monitor Object)的所有权才能继续前进直到遇到相对应的monitorexit退出为止。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿木木AEcru

感谢您的阅读,赞赏请随意打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值