线程与进程

  1. 进程:程序的执行过程
  2. 线程:线程共享进程的资源

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方法后执行

最新文章

  1. zendstuido10 配置spket插件
  2. checkbox全选-取消-再全选没有显示问题
  3. [转]RamDisk导致远程桌面客户端无法启动问题
  4. 微软发布手机版 Sample Browser。7000多示例代码一手掌握
  5. <!--[if IE]>….<![endif]--> (<!--[if !IE]>||<![endif]-->)的用法
  6. STL容器迭代器失效分析
  7. iOS- 如何集成支付宝
  8. Java7中的ForkJoin并发框架初探(中)——JDK中实现简要分析
  9. fflush(stdin)与fflush(stdout)
  10. Ubuntu下升级Git以及获取ssh keys的代码
  11. MySQL 可以用localhost 连接,但不能用IP连接的问题
  12. [转]Bing Maps Tile System 学习
  13. centos 7 git的管理和使用
  14. git客户端msysGit和TortoiseGit使用
  15. selenium-chrome-headless
  16. [html] 回到页首
  17. Kylin启动时错误:Failed to find metadata store by url: kylin_metadata@hbase 解决办法
  18. 如果不得已需要全局变量,则使全局变量加前缀 g_(表示 global)
  19. 字符编码_Windows资料
  20. 作为一个编程新手,我再也不怕Flink迷了我的眼!

热门文章

  1. springboot 基于@Scheduled注解 实现定时任务
  2. hibernate中的@GeneratedValue与@GenericGenerator
  3. POJ 2778 DNA Sequence ( Trie图、矩阵快速幂 )
  4. SVN重命名后,不允许提交
  5. php语法标识符
  6. leetcode 107.Binary Tree Level Order Traversal II 二叉树的层次遍历 II
  7. 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第1节 基本概念_01maven概述
  8. Call to undefined method app\models\User::find() yii2-admin
  9. 中国MOOC_零基础学Java语言_第4周 循环控制_1素数和
  10. http层负载均衡之 haproxy实践篇