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

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)

        线程池的概念:首先创建一些线程,它们的集合称为线程池,当服务器接受到一个客户请求后,就从线程池中取出一个空闲的线程为之服务,服务完后不关闭该线程而是将该线程还回到线程池中。
        在线程池的编程模式下,任务是提交给整个线程池,而不是直接交给某个线程,线程池在拿到任务后,它就在内部找有无空闲的线程,再把任务交给内部某个空闲的线程,
        一个线程同时只能执行一个任务,但可以同时向一个线程池提交多个任务

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

线程池有以下几种实现策略

-Exe

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

猴子学编程

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

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

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

打赏作者

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

抵扣说明:

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

余额充值