学习笔记1—多线程相关笔记

本文深入探讨了多线程的必要性和优势,包括提高CPU利用率、降低程序耦合度等,并介绍了多线程的实现方式及注意事项。此外,还讲解了线程间通讯机制、同步容器与并发容器的区别,以及Java中的移位运算符。

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

1.为什么使用多线程?

举例说明:
单个进程好比:一个人需要做饭、洗衣服、扫地、接孩子放学,需要一个人一个一个去完成,合理规划时间。
多线程好比:找多个人做饭、洗衣服、扫地、接孩子放学,他们之间互不干扰,互不影响。
由此可以看到:多线程相比于单个进程执行效率更高。能合理的利用cpu资源,降低程序之间的耦合性。

 

2.多线程有几种实现方式?

继承Thread类、实现Runnable接口、内部类 new Thread(new Runnable()..)

 

3.使用多线程过程中需要注意什么?

使用多线程需要注意线程安全性问题。
线程安全解决方案有:同步方法 、同步代码块
同步方法:使用synchronized关键字修饰的方法,例如 void synchronized(){}
同步代码块: 使用synchronized修饰的代码块,例如 synchronized(obj){} ,obj 可以是this锁,也可以是某个对象锁

 

4.多线程之间怎么通讯?

使用等待唤醒机制:wait()、notify()、notifyAll()
wait:使当前线程进入等待状态,调用时必须放在synchronized方法 或者 synchronized 代码块中。
notify:唤醒一个等待当前锁对象的线程
notifyAll:唤醒所有等待当前锁对象的线程

 

5.并发包下有哪些同步容器 和并发容器?

Java中同步容器一共有两个Vector 和 HashTable。
两者的共性:都是线程安全的,在需要同步的方法上加synchronized关键词
使用Collections.synchronized*()方法可以将不安全的集合变成线程安全的集合

Java中并发容器也有两个:ConcurrentHashMap 和 ConcurrentSkipListMap。
ConcurrentHashMap是线程安全的,由于代码中大多数全局变量使用volatile关键字声明,所以性能较好。
ConcurrentSkipListMap是在ConcurrentHashMap的基础上,增加了排序功能

 

6.Java中有三种移位运算符

<< : 左移运算符,num << 1,相当于num乘以2
>> : 右移运算符,num >> 1,相当于num除以2
>>>: 无符号右移,忽略符号位,空位都以0补齐

 

转载于:https://www.cnblogs.com/IT-study/p/10769208.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值