死磕Java多线程(一)---线程的简单介绍
2019-08-10 19:03
99 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44046437/article/details/99099183
引言
以前对多线程的认识就只有new Thread 或 实现一个runnable接口,简单用用互斥锁(synchronized),线程间的通信(wait/notify)就没了,最近在复习多线程,就去网上看看大佬们的博客,才发现自己真的是井底之蛙,多线程都没入门,所以最近在拼命学习多线程,顺便总结一下,方便以后复习。。。。
1. 线程的实现
2.线程的六种状态
3.多线程的优点
更好的资源利用
在某些场景下程序的设计会更简单
提升程序的响应性
4.多线程的缺点
设计更复杂:
一般多线程程序比单线程程序的设计要复杂。在多线程访问共享数据的时候,这部分代码需要特别的注意。线程之间的交互往往非常复杂。不正确的线程同步产生的错误非常难以被发现,并且重现以修复。
上下文切换的开销:
当CPU从执行一个线程切换到执行另外一个线程的时候,它需要先存储当前线程的本地的数据,程序指针等,然后载入另一个线程的本地数据,程序指针等,最后才开始执行。这种切换称为“上下文切换”(“context switch”)。CPU会在一个上下文中执行一个线程,然后切换到另外一个上下文中执行另外一个线程。上下文切换并不廉价。如果没有必要,应该减少上下文切换的发生。
增加资源消耗:
线程在运行的时候需要从计算机里面得到一些资源。除了CPU,线程还需要一些内存来维持它本地的堆栈。它也需要占用操作系统中一些资源来管理线程。我们可以尝试编写一个程序,让它创建100个线程,这些线程什么事情都不做,只是在等待,然后看看这个程序在运行的时候占用了多少内存。
5.如何使用Java创建多线程
- 继承Thread类,重写run方法
- 把相关的类实现Runnable(可运行)接口,重写run方法。
- 实现Callable接口(相对用得较少)
- 使用线程池
相关文章推荐
- java中线程简单介绍
- java线程简单介绍
- java多线程(一)——简单介绍
- iOS开发教程之线程关于多线程的简单介绍
- 死磕Java并发(一)什么是线程以及创建多线程的三种方式
- <JAVA学习笔记4>——进程、线程简单介绍
- iOS多线程-各种线程锁的简单介绍
- java线程简单介绍
- java关于线程简单介绍
- iOS边练边学--多线程介绍、NSThread的简单实用、线程安全以及线程之间的通信
- java 多线程 Synchronized的简单介绍
- iOS多线程-各种线程锁的简单介绍
- java线程基础巩固---多线程死锁分析,案例介绍
- Java编程之多线程死锁与线程间通信简单实现代码
- Java多线程设计(一)由浅入深介绍进程与线程
- Java中的多线程简单介绍(带代码)
- Java多线程-一个简单的线程,实现挂起和恢复的功能
- java线程当中 sleep() join() yield()方法的简单比较以及如何保护共享数据介绍
- Java多线程——<三>简单的线程执行:Executor
- 黑马程序员——多线程--线程的创建方式和线程安全的简单介绍