Java快速入门系列-5(Java进阶特性)

第五章:Java进阶特性

    • 5.1 多线程与并发编程
      • 5.1.1 多线程基础
      • 5.1.2 线程同步与锁
      • 5.1.3 线程间通信与协作
      • 5.1.4 线程池
    • 5.2 Java I/O流
      • 5.2.1 字节流与字符流
      • 5.2.2 缓冲流
      • 5.2.3 对象序列化与反序列化
    • 5.3 网络编程基础
      • 5.3.1 Socket编程
      • 5.3.2 NIO编程
    • 5.4 Java反射机制
      • 反射的基本用法
      • 使用反射实现工厂模式
    • 5.5 Java 8新特性
      • Lambda表达式
      • Stream API
    • 5.6 Java 16及更高版本的新特性
    • 小结

开篇图

5.1 多线程与并发编程

5.1.1 多线程基础

在Java中,多线程是通过Thread类或实现Runnable接口来创建和管理线程的。多线程使得程序能够同时执行多个任务,提高程序运行效率。

// 通过继承Thread类创建线程
public class MyThread extends Thread {
   
    @Override
    public void run() {
   
        System.out.println("Running in " + Thread.currentThread().getName());
    }

    public static void main(String[] args) {
   
        MyThread thread = new MyThread();
        thread.start(); // 启动线程
    }
}

// 通过实现Runnable接口创建线程
public class RunnableExample implements Runnable {
   
    @Override
    public void run() {
   
        System.out.println("Running in " + Thread.currentThread().getName());
    }

    public static void main(String[] args) {
   
        RunnableExample task = new RunnableExample();
        Thread thread = new Thread(task);
        thread.start();
    }
}

5.1.2 线程同步与锁

在多线程环境下,可能会出现数据不一致的问题,这时就需要引入线程同步机制,如synchronized关键字和Lock接口。下面是一个简单的synchronized示例:

public class Counter {
   
    private int count = 0;

    public synchronized void increment() {
   
        count++;
    }

    public synchronized void decrement() {
   
        count--;
    }

    public synchronized int value() {
   
        return count;
    }
}

Java 5引入了java.util.concurrent.locks包,提供更灵活的锁机制,如ReentrantLock

import java.util.concurrent.locks.ReentrantLock;

public class CounterWithLock {
   
    private final ReentrantLock lock = new ReentrantLock();
    private 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 ChatGPT 创建在线课程:一步一步指南与提示模板

原文:Creating Online Courses with ChatGPT 译者:飞龙 协议:CC BY-NC-SA 4.0 谢谢 作为对你支持的感谢,随意定制本书中列出的任何提示,并将其作为你自己的重新销售。是的,对你免费。 它们都结构良好且用…

深入探索力扣第12题:整数转罗马数字的算法之旅

力扣(LeetCode)第12题“整数转罗马数字”提供了一个绝佳的学习机会,不仅让我们深入古罗马的数字系统,也锻炼了我们的编程技巧。一起看看其背后的逻辑。 罗马数字基础 罗马数字是一种古老的数字表示方法,广泛用于古罗…

linux安装和使用Rancher

linux安装和使用Rancher Rancher介绍请看如下博客 arm架构安装Rancher并导入k8s集群解决Error: no objects passed to apply 华为云arm架构安装k8s(kubernetes) linux下安装Rancher Rancher部署监控k8s集群状态等,比Dashboard插件强大 提前安装好K8S 在master上执行#如果…

【GFS】大数据技术的基石,分布式文件系统的鼻祖

目录 1.概述 1.1.分布式文件系统在大数据中的基石地位 1.1.谷歌当初面对的问题 1.2.谷歌如何解决这些问题的 1.数据量大,数据格式复杂,有大文件也有小文件 2.运行在普通机器上,失效是常态 2.系统架构 3.读操作 4.写操作 5.追加操作…

TiDB 社区智慧合集丨解码 TiDB 性能谜题:让你的数据库发挥最强动力!

来自社区,回归社区。非常感谢各位 TiDBer 在之前 【TiDBer 唠嗑茶话会丨征集 TiDB 数据库性能优化大师,你是如何优化 TiDB 数据库性能的呐?】( https://asktug.com/t/topic/1005563 )里提供的各种性能优化方法。这篇帖子收集整理了大家推荐的…

STL库 —— string 类的编写

目录 一、成员函数 1.1 构造函数 1.1.1 无参构造 1.1.2 传参构造 1.1.3 优化 1.2 析构函数 1.3 拷贝构造函数 1.4 赋值运算符重载 二、容量成员 2.1 size 函数 2.2 capacity 函数 2.3 reserve 函数 2.3 resize 函数 2.4 clear 函数 三、元素访问成员 3.1 [] 的…

希尔排序解读

在算法世界中,排序算法是至关重要的一部分。而希尔排序(Shell Sort)作为一种基于插入排序的改进算法,通过允许交换非相邻元素,从而在一定程度上提高了排序效率。本文将深入探讨希尔排序的原理、实现方式以及它的性能特…

InternLM2-Chat-1.8B 模型测试

在interStudio进行InternLM2-Chat-1.8B模型访问,进入开发机后 配置基础环境 新建conda环境并且进入 conda create -n demo python3.10 -y conda activate demo 下载pytorch等相关包 conda install pytorch2.0.1 torchvision0.15.2 torchaudio2.0.2 pytorch-cuda11.…

力扣 76.最小覆盖子串

题目: 题目理解:这题属于最小滑动窗口。所求得的连续滑动窗口包含来t中的字符,不一定要按照t中的顺序。 class Solution {public String minWindow(String s, String t) {// table表示字符串t里的字符if (s null || s.length() 0 || t n…

ThingsBoaed、系统模块层级讲解

系统管理员能够使用租户配置文件为多个租户配置通用设置。每个租户在单个时间点都拥有唯一的个人资料。 让我们一一查看租户配置文件中的可用设置。 配置文件配置 这些设置允许系统管理员配置对租户创建的实体数量的限制,设置每月最大消息数、API 调用数的限制&…

Java集合详解(一)-- List集合

1.集合简介 java集合可分为Set、List、Queue和Map四种体系。 Java集合就像一种容器,可以把多个对象(实际上是对象的引用,但习惯上都称对象)“丢进”该容器中。从Java 5 增加了泛型以后,Java集合可以记住容器中对象的数…

02-JDK新特性-try-with-resources自动管理资源关闭

try-with-resources 为什么要介绍这个了 看看一下以下代码: public static void fileCopyByTryWithResources(File src, File des) throws IOException {try (FileInputStream fis new FileInputStream(src); FileOutputStream fos new FileOutputStream(des);…

SecureCRT防止超时自动断开

Options——>Session Options——>Terminal——>选择 Send protocol NO-OP ——>60seconds(每一分钟发送一次请求)

【考研数学】《1800》《660》还是《880》?怎么刷效果最好?

刷题吃不透,做了再多也没用! 你目前连1800都没法拿下,你还着急要做660和880,是认真的吗? 这《接力题典1800》有啥特色呢?知识点全面覆盖,题目中规中矩,配合汤老师的视频看效果更佳…

【二分查找】Leetcode 二分查找

题目解析 二分查找在数组有序可以使用,也可以在数组无序的时候使用(只要数组中的一些规律适用于二分即可) 704. 二分查找 算法讲解 当left > right的时候,我们循环结束,但是当left和right缩成一个点的时候&#x…

【Java SE】继承与组合

🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 文章目录 1. 再谈初始化2. 再谈protected关键字2.1 子类可见性2.2 访问修饰限定符的选择 3. 继承与组合 1. 再谈初始化…

Python实现获取某手视频评论【自动生成did】

今天在获取某手视频评论的时候,总是会出发风控导致web_did失效,就算登录了也没用,还会导致账号被风控,app端抓包和逆向难度又大,那么有没有一种不需要登录而且不会出发风控的方法来获取评论列表呢?当然有&a…

Python球球大作战

文章目录 写在前面球球大作战程序设计注意事项写在后面 写在前面 安装pygame的命令: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pygame球球大作战 《球球大作战》是一款简单易上手、充满趣味性和竞技性的休闲手游。游戏的核心玩法可以用一句话概…

机器学习 | 基于Scikit-learn中手写数字集的交叉验证

在本文中,我们将讨论交叉验证及其在手写数字集上的使用。此外,我们将看到使用手写数字集的代码实现。 什么是交叉验证? 手写数字集的交叉验证将允许我们选择最佳参数,避免过度拟合训练数据集。它是一个试验的尝试程序&#xff0…

【Python】Tkinter模块(巨详细)

专栏文章索引:Python 有问题可私聊:QQ:3375119339 目录 一、窗口设计 1.创建窗口 2.窗口属性 3.窗口位置 4.Widget 一、窗口设计 1.创建窗口 实例-创建空白窗口: from tkinter import * # 导入tkinter模块win Tk() # 通…