Java中的多线程
来源:互联网 发布:手机电视直播软件下载 编辑:程序博客网 时间:2024/06/08 14:16
多线程的优点:
1)资源利用率更好
2)程序设计在某些情况下更简单
3)程序响应更快
多线程的缺点:
1)设计更复杂
虽然有一些多线程应用程序比单线程的应用程序要简单,但其他的一般都更复杂。在多线程访问共享数据的时候,这部分代码需要特别的注意。线程之间的交互往往非常复杂。不正确的线程同步产生的错误非常难以被发现,并且重现以修复。
2)上下文切换的开销
当CPU从执行一个线程切换到执行另外一个线程的时候,它需要先存储当前线程的本地的数据,程序指针等,然后载入另一个线程的本地数据,程序指针等,最后才开始执行。这种切换称为“上下文切换”(“context switch”)。CPU会在一个上下文中执行一个线程,然后切换到另外一个上下文中执行另外一个线程。上下文切换并不廉价。如果没有必要,应该减少上下文切换的发生。
线程安全
在同一程序中运行多个线程本身不会导致问题,问题在于多个线程访问了相同的资源。如同一内存区(变量,数组,或对象)、系统(数据库,web services等)或文件。实际上,这些问题只有在一或多个线程向这些资源做了写操作时才有可能发生,只要资源没有发生变化,多个线程读取相同的资源就是安全的。
当两个线程竞争同一资源时,如果对资源的访问顺序敏感,就称存在竞态条件。导致竞态条件发生的代码区称作临界区。
如果一个资源的创建,使用,销毁都在同一个线程内完成,且永远不会脱离该线程的控制,则该资源的使用就是线程安全的。
java同步块
Java中的同步块用synchronized标记。同步块在Java中是同步在某个对象上。所有同步在一个对象上的同步块在同时只能被一个线程进入并执行操作。所有其他等待进入该同步块的线程将被阻塞,直到执行该同步块中的线程退出。
有四种不同的同步块:
- 实例方法
- 静态方法
- 实例方法中的同步块
- 静态方法中的同步块
- Java 程序中的多线程
- Java 程序中的多线程
- Java 程序中的多线程
- Java程序中的多线程
- java中的多线程
- Java中的多线程(一)
- Java 程序中的多线程
- Java中的多线程程序设计
- Java 程序中的多线程
- Java 程序中的多线程
- Java 程序中的多线程
- Java 程序中的多线程
- Java 程序中的多线程
- 再忆Java中的多线程
- Java中的多线程
- Java中的多线程
- Java中的多线程编程
- Java中的多线程编程
- 基于maven的邮件发送模块
- JQuery 关闭子页面,刷新父页面
- Gradle 庖丁解牛(构建源头源码浅析)
- SuperMap杯全国高校GIS大赛-Web与Online开发组学习资料
- SVN使用介绍
- Java中的多线程
- MVC使用SignalR 提高B2C商城用户体验3
- 01背包问题(用c语言实现)-回溯法求解
- win8在应用与桌面自动切换
- Kotlin入门第一弹---HelloWorld
- Java--内部类
- 什么是socket
- phpmyadmin登录时指定服务器ip和端口的方法
- 时间工具类