A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 乖睡觉咯 中级黑马   /  2013-8-24 17:46  /  965 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

              多线程总结
    定义:   线程就是运行不同功能代码的执行路劲,控制单元,每一个引应用程序至少有一个活的线程
   创建线程的方式有两种:
1.继承Thread类,覆盖run方法。建立子类对象,调用start();
2.实现Runnable接口,实现run方法,建立Thread对象,调用start方法。   
问题的引发,多个线程操作同一个数据的时候引发的安全问题。为保证数据的准确性,使用同步技术Synchronized
同步代码: 当一个线程去操作数据的时候,如果没有操作完毕。其余的线程无法操作。去操作数据的线程必须要拿到对象锁,没有拿到的线程,处于零时阻塞的状态。(对象锁最好实用字节码文件,因为字节码文件只有一份)
死锁: 同步中嵌套同步。多个线程抢用一把锁。
线程的状态: 被创建、运行、冻结、临时阻塞、消亡。
Sleepwait的区别:
     Sleep() 线程休眠,但是不释放锁。其他线程获取不到锁
        Wait() 线程等待,但是释放锁,可以由其他程序来执行,等待唤醒后,还要重新获取锁,才能执行。   
   生产者与消费者:
          Notify  唤醒单个线程   notifyAll 唤醒多个线程
   JDK1.5新特性:
使用步骤:
      1   通过Lock接口的实现类对象,获取ReentrantLock子类对象。
2   通过创建newCondition对象。可以创建多个。
3  获取锁  Lock.lock方法 。
4  使用await方法。
5  唤醒线程。Condition.signal();
6  释放锁  Lock.unlock();(必须要释放)
其他的方法:
      1    Interrupt() 停止线程的方法。引发异常停止
      2    setDaemontrue) 守护线程
3    join() 等待线程终止
4    static led() 线程的让步


1 个回复

倒序浏览
总结的不错!又帮我顺了一遍!要是我自己想的话肯定写不全。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马