Java入门第150课——线程同步与Socket

本文介绍了Java中多线程的基础,包括线程安全API如StringBuffer、Vector和Hashtable,以及非线程安全的StringBuilder和ArrayList等。讲解了使用ExecutorService实现线程池,强调了线程池在控制线程数量和重用线程方面的重要性。此外,文章还详细阐述了Socket原理,包括获取本地和远程地址、端口号,以及如何通过Socket获取输入流和输出流进行TCP通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 多线程基础

1.1 线程同步

1.1.1 线程安全API与非线程安全API

StringBuffer 是同步的 synchronized append0;

·StringBuilder 不是同步的 append();
Vector和 Hashtable 是同步的

ArrayList和HashMap 不是同步的
获取线程安全的集合方式

- Collections.synchronizedList()

获取线程安全的List集合

- CollectionssynchronizedMap()

获取线程安全的Map

1.1.2 使用ExecutorService实现线程池

ExecutorService是java提供的用于管理线程池的类
线程池有两个主要作用:
- 控制线程数量
- 重用线程
当一个程序中若创建大量线程,并在任务结束后销毁会给系统带来过度消耗资源,以及过度切换线程的危险从而可能导致系统崩溃。为此我们应使用线程池来解决这个问题。

使用ExecutorService实现线程池(续1)

        线程池的概念:首先创建一些线程,它们的集合称为线程池,当服务器接受到一个客户请求后,就从线程池中取出一个空闲的线程为之服务,服务完后不关闭该线程而是将该线程还回到线程池中。
        在线程池的编程模式下,任务是提交给整个线程池,而不是直接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

猴子学编程

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值