面试突击指南:Java基础面试题3

news2024/10/6 3:11:39

1.介绍下进程和线程的关系

进程:一个独立的正在执行的程序。

线程:一个进程的最基本的执行单位,执行路径。

在这里插入图片描述

多进程:在操作系统中,同时运行多个程序。

多进程的好处:可以充分利用CPU,提高CPU的使用率。

多线程:在同一个进程(应用程序)中同时执行多个线程。

多线程的好处:提高进程的执行使用率,提高了CPU的使用率。

注意

  1. 在同一个时间点,一个CPU中只可能有一个线程在执行。
  2. 多线程不能提高效率,反而会降低效率,但可以提高CPU的使用率。
  3. 一个进程如果有多条执行路径,则称为多线程程序。
  4. Java虚拟机的启动至少开启了两条线程:主线程和垃圾回收线程。
  5. 一个线程可以理解为进程的子任务。

2.说说Java中实现多线程的几种方法

在Java中,实现多线程的常用三种方式是:

  1. 继承Thread类
  2. 实现Runnable接口
  3. 实现Callable接口(JDK 1.5及以上)
  4. 线程池方式创建
继承Thread类

实现的步骤:

  1. 创建Thread类的子类。
  2. 重写run方法。
  3. 创建线程对象。
  4. 启动线程。

案例代码:

package com.bobo.thread;

public class ThreadDemo02 {
   
    public static void main(String[] args) {
   
        System.out.println("main方法执行了1...");
        // Java中的线程本质上就是一个Thread对象
        Thread t1 = new ThreadTest01();
        // 启动一个新的线程
        t1.start();
        for (int i = 0; i < 100; i++) {
   
            System.out.println("main方法的循环..." + i);
        }
        System.out.println("main方法执行结束了3...");
    }
}

class ThreadTest01 extends Thread {
   
    @Override
    public void run() {
   
        System.out.println("我们的第一个线程执行了2....");
        for (int i = 0; i < 10; i++) {
   
            System.out.println("子线程:" + i);
        }
    }
}

注意点

  1. 启动线程是使用start方法而不是run方法。
  2. 线程不能启动多次,如果要创建多个线程,则需要创建多个Thread对象。

线程启动流程图

实现Runnable接口

在这种方式中,可以通过实现Runnable接口来实现线程程序代码和数据的有效分离。

实现的步骤:

  1. 创建Runnable的实现类。
  2. 重写run方法。
  3. 创建Runnable实例对象。
  4. 创建Thread对象,并把Runnable实现作为Thread构造方法的参数。
  5. 启动线程。

案例代码:

package com.bobo.runable;

public class RunableDemo01 {
   
    public static void main(String[] args) {
   
        System.out.println("main执行了...");
        Runnable r1 = new RunableTest();
        Thread t1 = new Thread(r1);
        t1.start();
        System.out.println("main结束了...");
    }
}

class RunableTest implements Runnable {
   
    @Override
    public void run() {
   
        System.out.println("子线程执行了...");
    }
}

实现Runnable接口的好处

  1. 可以避免Java单继承带来的局限性。
  2. 适合多个相同的程序代码处理同一个资源的情况,较好地体现了面向对象的设计思想。
实现Callable接口

通过实现Callable接口的方式可以获取线程的返回结果,并且可以抛出异常。这种方式在JDK 1.5之后推出。

实现的步骤:

  1. 创建Callable的实现类。
  2. 实现call方法,定义返回结果。
  3. 创建Callable实例对象。
  4. 使用FutureTask类来封装Callable对象。
  5. 使用Thread对象来启动线程。

案例代码:

package com.bobo.callable;

import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;

public class CallableDemo01 {
   
    public static void main(String[] args) throws Exception {
   
        Callable<Integer> callable = new MyCallable();
        FutureTask<Integer> futureTask = new FutureTask<>(callable);
        Thread t1 = new Thread(futureTask);
        System.out.println("main方法start....");
        t1.start();
        System.out.println(futureTask.get());
        System.out.println("main方法end ....");
    }
}

class MyCallable implements Callable<Integer> {
   
    @Override
    public Integer call() throws Exception {
   
        int sum 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1894540.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习率调度器简明教程

学习率是神经网络训练中最重要的超参数之一&#xff0c;影响学习过程的速度和有效性。学习率过高会导致模型在最小值附近震荡&#xff0c;而学习率过低会导致训练过程非常缓慢甚至停滞。本文直观地介绍了学习率调度程序&#xff0c;它是用于在训练期间调整学习率的技术。 NSDT工…

解决SeaTunnel 2.3.4版本写入S3文件报错问题

在使用Apache SeaTunnel时&#xff0c;我遇到了一个写入S3文件的报错问题。通过深入调试和分析&#xff0c;找到了问题所在&#xff0c;并提出了相应的解决方案。 本文将详细介绍报错情况、参考资料、解决思路以及后续研究方向&#xff0c;希望对大家有帮助&#xff01; 一、…

江门雅图仕职业技术学校领导一行莅临泰迪智能科技参观调研

7月2日&#xff0c;江门雅图仕职业技术学校总校长肖胜阳、校长许昌、办公室主任任志娟等莅临广东泰迪智能科技股份有限公司产教融合实训中心参观调研。泰迪智能科技董事长张良均、副总经理施兴、产品中心总监周东平、校企合作经理吴桂锋进行热情接待&#xff0c;双方就学校专业…

Python用于处理 DNS 查询库之Dnspython 使用详解

概要 Dnspython 是一个开源的 Python 库,专门用于处理 DNS 查询。它被设计为既简单易用又功能强大,可以满足从简单到复杂的各种 DNS 相关需求。无论是进行基础的 DNS 查询还是进行高级的 DNS 服务器管理,dnspython 都能提供相应的功能。 这个库支持包括 A、AAAA、MX、TXT …

汉光联创HGLM2200N黑白激光多功能一体机加粉及常见问题处理

基本参数&#xff1a; 机器型号&#xff1a;HGLM2200N 产品名称&#xff1a;A4黑白激光多功能一体机 基础功能&#xff1a;打印、扫描、复印 打印速度&#xff1a;22页/分钟 纸张输入容量&#xff1a;150-249页 单面支持纸张尺寸&#xff1a;A4、A5、A6 产品尺寸&#x…

拓展欧几里得和裴蜀定理

裴蜀定理&#xff08;或贝祖定理&#xff09;说明了对任何整数a、b和它们的最大公约数d&#xff0c;关于未知数x和y的线性不定方程&#xff08;称为裴蜀等式&#xff09;&#xff1a;若a,b是整数,且gcd(a,b)d&#xff0c;那么对于任意的整数x,y,axby都一定是d的倍数&#xff0c…

pytorch中的contiguous()

官方文档&#xff1a;https://pytorch.org/docs/stable/generated/torch.Tensor.contiguous.html 其描述contiguous为&#xff1a; Returns a contiguous in memory tensor containing the same data as self tensor. If self tensor is already in the specified memory forma…

音乐发行平台无加密开源源码

适用于唱片公司&#xff0c;用于接收物料&#xff0c;下载物料功能&#xff1a;个人或机构认证&#xff0c;上传专辑和歌曲&#xff0c;版税结算环境要求php7.4Nginx 1、导入数据库 2、/inc/conn.php里填写数据库密码等后台路径/admin&#xff08;可自行修改任意入口名称&…

Java中子类继承和方法重写_java重写父类方法参数变了怎么改

public(非私有)private私有()构造方法不能继承不能继承成员变量能继承能继承成员方法能继承不能继承 1.也不能继承父类的有参构造方法,具体看构造函数继承特点 2.私有的成员变量相当于从父类拷贝一份拿过来用的,不能直接用,需要get/set方法 继承特点 继承中 成员变量访问特点:如…

重参数化技巧

Q&#xff1a;标准正态分布 P&#xff1a;预期的分布&#xff08;假设符合正态分布&#xff09; 学习与 - 手推 Diffusion Model (DDPM) 1/3 &#xff1a;数学原理推导_哔哩哔哩_bilibili

【test】小爱同学通过esp32控制电脑开关

文章目录 一、环境准备二、开关机原理数据传输框架 三、环境搭建1.巴法云平台设置2.米家设置3.windows网络唤醒设置4.搭建esp32开发环境并部署&#xff08;1&#xff09;新建项目&#xff08;2&#xff09;导入esp32库&#xff08;3&#xff09; 添加库&#xff08;4&#xff0…

透过 Go 语言探索 Linux 网络通信的本质

大家好&#xff0c;我是码农先森。 前言 各种编程语言百花齐放、百家争鸣&#xff0c;但是 “万变不离其中”。对于网络通信而言&#xff0c;每一种编程语言的实现方式都不一样&#xff1b;但其实&#xff0c;调用的底层逻辑都是一样的。linux 系统底层向上提供了统一的 Sock…

君子签区块链+AI,驱动组织实现高效合同管理、精准风险控制

在传统合同签署的过程中&#xff0c;企业、组织、机构都面临着合同签署与管理的诸多问题和挑战&#xff1a;合同种类繁多、数量庞大导致起草效率低下&#xff1b;管理流程繁琐、权限分散使得审批周期冗长且效率低下&#xff1b;合同签订版本难以精准复核&#xff0c;风险防控更…

大型网站软件系统架构演进过程

在我们的生活中,通常会使用大型网站系统,比如购物网站淘宝,京东,阿里1688;大型搜索引擎网站百度,社交类的如腾讯旗下的微信,QQ及新浪旗下的微博等,他们通常都有一下特点: 高并发、大流量&#xff1a;这些系统必须能够处理成千上万甚至数百万的并发用户请求&#xff0c;以及持续…

深入理解pytest fixture:提升测试的灵活性和可维护性!

在现代软件开发中&#xff0c;测试是保证代码质量的重要环节。pytest作为一个强大的测试框架&#xff0c;以其灵活的fixture系统脱颖而出。本文将详细介绍pytest中的fixture概念&#xff0c;通过具体案例展示其应用&#xff0c;并说明如何利用fixture提高测试的灵活性和可维护性…

CVPR 2024最佳论文:“神兵”的组合器 Generative Image Dynamics

CVPR 2024的最佳论文来自谷歌、美国加州大学圣迭戈分校。两篇都来至于视频生成领域&#xff0c;可见今年外界对视频生成领域关注度很高。今天的这篇是“Generative Image Dynamics”&#xff0c;Google Research发布的。它的研究成果令人震惊&#xff0c;从单张RGB图像生成连续…

VIM介绍

VIM&#xff08;Vi IMproved&#xff09;是一种高度可配置的文本编辑器&#xff0c;用于有效地创建和更改任何类型的文本。它是从 vi 编辑器发展而来的&#xff0c;后者最初是 UNIX 系统上的一个文本编辑器。VIM 以其键盘驱动的界面和强大的文本处理能力而闻名&#xff0c;是许…

【pytorch14】感知机

单层感知机模型 对于单层的感知机&#xff0c;它的激活函数是一个sigmoid 对于符号的定义做一个规范化&#xff0c;输入层每一层进行一个编号 输入是第0层&#xff0c;上标0表示属于输入层&#xff0c;下标0到n表示一共有n个节点(这里严格来说应该是0~n-1&#xff0c;为了书写…

阿里Qwen2-72B大模型已是开源榜的王者,为什么还要推出其他参数模型,被其他模型打榜?

6 月 27 日&#xff0c;全球知名的开源平台 Hugging Face 的联合创始人兼首席执行官 Clem 在社交平台激动宣布&#xff0c;阿里 Qwen2-72B 成为了开源模型排行榜的王者。 这是一件大好事&#xff0c;说明了我们在大模型领域从先前的追赶&#xff0c;逐渐走向了领导&#xff0c;…

【 VIPKID-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞 …