首页 > 技术文章 > Java多线程(1)

zhaifeng 2019-05-24 16:26 原文

线程与进程

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

 

推荐阅读