Java多线程(1)
2024-09-05 17:50:04
线程与进程
- 进程:程序的执行过程
- 线程:线程共享进程的资源
Java多线程
- 实现的方式
- 继承Tread类:使用getName()获取当前线程名
- 实现Runnable接口:Thread.currentThead().getName()获取当前线程的名称
- 线程启动
- Thread对象.start()方法
- 线程休眠
- Thread.sleep()方法
- 当前线程阻塞
- t.join()方法来阻塞当前运行线程,知道线程t运行完成,当前线程继续运行
- 常用方法
Java线程可见性问题
- volatile关键字,保证了线程可以正确读取其他线程写入的值
正确停止Java线程的方式
- 不要使用stop方法
- 正确方法:使用退出标志来退出线程
经典错误就是使用interrupt方法,这让线程的interrupted属性被设置,当线程调用sleep、join方法处于阻塞态时,被其他线程调用interrupt唤醒会抛出异常
线程交互
争用条件:当多个线程同时访问同一数据时,每个线程都尝试操作该数据,从而导致这个数据被破坏
互斥与同步
互斥:同一时间只能有一个线程访问该资源
实现方法:加锁
同步:一种通信机制,当一个线程操作完成后,以某种方式通知其他线程
实现:使用NotifyAll方法唤醒其他线程去竞争锁,竞争成功后从上一次wait方法后执行
最新文章
- zendstuido10 配置spket插件
- checkbox全选-取消-再全选没有显示问题
- [转]RamDisk导致远程桌面客户端无法启动问题
- 微软发布手机版 Sample Browser。7000多示例代码一手掌握
- <;!--[if IE]>;….<;![endif]-->; (<;!--[if !IE]>;||<;![endif]-->;)的用法
- STL容器迭代器失效分析
- iOS- 如何集成支付宝
- Java7中的ForkJoin并发框架初探(中)——JDK中实现简要分析
- fflush(stdin)与fflush(stdout)
- Ubuntu下升级Git以及获取ssh keys的代码
- MySQL 可以用localhost 连接,但不能用IP连接的问题
- [转]Bing Maps Tile System 学习
- centos 7 git的管理和使用
- git客户端msysGit和TortoiseGit使用
- selenium-chrome-headless
- [html] 回到页首
- Kylin启动时错误:Failed to find metadata store by url: kylin_metadata@hbase 解决办法
- 如果不得已需要全局变量,则使全局变量加前缀 g_(表示 global)
- 字符编码_Windows资料
- 作为一个编程新手,我再也不怕Flink迷了我的眼!
热门文章
- springboot 基于@Scheduled注解 实现定时任务
- hibernate中的@GeneratedValue与@GenericGenerator
- POJ 2778 DNA Sequence ( Trie图、矩阵快速幂 )
- SVN重命名后,不允许提交
- php语法标识符
- leetcode 107.Binary Tree Level Order Traversal II 二叉树的层次遍历 II
- 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第1节 基本概念_01maven概述
- Call to undefined method app\models\User::find() yii2-admin
- 中国MOOC_零基础学Java语言_第4周 循环控制_1素数和
- http层负载均衡之 haproxy实践篇