黑马程序员-多线程

---------------------- android培训java培训、期待与您交流! ----------------------

多线程可以使程序运行的效率更高.

 1.创建线程
  a.定义一个类继承Thread类, 重写run()方法, 创建该类对象, 调用start()方法.
   程序会开启一条新线程, 在新线程上自动调用run()方法.
  b.定义一个类实现Runnable接口, 实现run()方法, 创建Thread对象, 构造函数中传入Runnable对象, 调用start()方法.
   程序会开启一条新线程, 在新线程上自动调用Runnable的run()方法.
 2.Thread类常用方法
  a.currentThread()
   获取当前线程对象
  b.getName()
   获取线程的名字
  c.setName(String)
   设置线程的名字
  d.sleep(long)
   控制线程休眠指定毫秒
  e.setDaemon(boolean)
   设置线程为后台(守护)线程, 后台线程不会单独执行. 注意, 必须在线程开启之前设置.
  f.join()
   当前线程暂停, 指定线程加入, 等待指定线程执行结束, 当前线程继续

 3.同步
  a.同步代码块
   使用synchronized(锁对象){ 同步代码 }方式定义同步代码块
   多个同步代码块如果使用相同的锁对象, 那么同一时间内只能执行一个
  b.同步方法
   如果整个方法内的代码都需要同步, 那么可以在方法声明上加上synchronized
   在同一个对象上的同步方法, 同一时间只能执行一个
   同步方法默认使用this作为锁对象
   如果希望同步方法和同步代码块进行同步, 那么同步代码块也要自划定锁对象为this
  c.什么时候用同步
   两个线程在执行两段代码的时候, 其中一段代码执行的过程中不希望CPU切换到另一段代码.
   可以将两段代码放在同步代码块中, 使用相同的锁对象, 这样同一时间内只能执行一段代码.
  d.线程安全问题
   当多个线程并发访问同一数据, 有可能出现线程安全问题.
   这时就可以使用同步技术来解决, 将访问数据的代码放在同步代码块中, 这样做同一时间只能有一条线程访问数据.
  e.死锁
   在多线程并发执行的时候, 尽量避免多层同步代码嵌套使用, 有可能互相冲突, 造成死锁
 4.通信
  a.等待
   使用锁对象的wait()方法进行等待
  b.唤醒
   使用锁对象的notify()方法进行唤醒, 该方法是唤醒随机一个线程
   使用notifyAll()方法可以唤醒所有等待的线程
 5.JDK5的同步
  使用ReentrantLock类创建一个锁对象, 在需要同步的代码前执行lock()方法, 同步结束的地方unlock()
 6.JDK5的通信
  使用ReentrantLock可以调用newCondition()方法创建Condition对象
  使用Condition对象await()方法可以控制当前线程等待
  使用Condition对象的signal()方法可以唤醒指定的线程

---------------------- android培训java培训、期待与您交流! ----------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值