版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25078673/article/details/80517000
1、什么是多线程?
一个进程可以开启多个线程,每个线程可以并发/并行执行不同任务。
2、Java多线程实现方式
2.1、继承Thread类
2.2、实现Runnable接口方式实现多线程
2.3、使用ExecutorService、Callable、Future实现有返回结果的多线程
3、多线程的优缺点
优点:提高资源利用率;提升程序执行效率;
缺点:开启线程会占用一定内存,降低程序性能;线程越多,CPU开销越大
4、线程的状态
4.1、新建状态(New):线程被创建
4.2、就绪状态(Runnable):可执行状态,线程对象调用start()启动
4.3、运行状态(Running):获取CPU进行执行。线程只能从就绪状态到运行状态
4.4、阻塞状态(Blocked):线程因为某种原因放弃CPU使用权,暂时停止运行。阻塞的三种状态:
等待阻塞:调用wait()方法
同步阻塞:获取synchronized同步锁失败
其他阻塞:调用线程sleep()或join()或发送I/O请求
4.5、死亡状态(Dead):线程执行结束退出
5、什么是并发
并发:单个CPU,通过CPU调度算法,处理多个任务的能力
并行:多个CPU,同时并处理相同的多个任务
6、Java如何实现高并发
6.1、乐观锁:适用于读不会冲突,写会冲突。同时读的频率远大于写
6.2、String.intern()字符串池:对用户sessionMap加锁,类似于数据库中表锁和行锁
6.3、ConcurrentHashMap