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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Bermuda  中级黑马   /  2014-8-6 19:41  /  2944 人查看  /  38 人回复  /   4 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Bermuda  于 2014-8-7 08:07 编辑

创建:
方式一:继承Thread
  步骤:
  继承Thread覆写run( )方法
  通过Thread子类创建线程对象
  调用start( );方法开启线程执行run( )

方式二:实现Runnable接口
  步骤:
  定义类实现Runnable接口
  覆盖接口中的run( )方法
  通过Thread类创建线程对象
  将实现Runnable接口的子类对象作为实际参数传递给Thread类的构造函数
  //让线程明确run( )方法所属对象是为了关联线程任务和线程对象
  调用Thread对象的start( )方法。开启线程运行Runnable接口中的run( )方法
  Ticket t = new Ticket();
  Thread t1 = new Thread(t); //创建线程。
  t实参传递,明确要运行的run( ) ,Ticket实现Runnable接口,覆写run()

状态:

创建:
     new Thread对象或其子类对象
运行:
     start( ),具备执行资格与执行权
冻结:
     放弃执行资格与执行权
       sleep(time);
       必须指定时间,时间到从冻结状态变为运行状态
   释放执行权不释放锁
   wait( );
  指不指定时间都可以,不指定的话必须由notify或notifyAll唤醒
  释放执行权,释放锁 (必须在同步中)
消亡:
stop();
阻塞:
线程具备cpu的执行资格,没有cpu的执行权
join方法:直到调用该方法的线程执行完再往下继续执行,异步变同步
yield方法:让出CPU执行权给同优先级线程与sleep类似
安全问题:

产生原因:多个线程操作共享数据,共享数据有多条语句,在某时刻被一个线程执行时没有执行完就被其他线程参与进来,并继续操作了共享数据,导致错误产生
多个线程操作共享数据
有多条语句对共享数据进行运算
解决:(加锁)共享数据的多条语句在某一时刻让一个线程执行完,其他线程不能执行
单例
只有一个对象:自己创建别人不能创建但我提供方法让你用
例子:军队指挥官,电脑资源管理器
---饿汉
---懒汉
  -------安全(双重判断加锁 single.class
  -------不安全

多线程_2345看图王.jpg (1.93 MB, 下载次数: 150)

多线程_2345看图王.jpg

线程状态_2345看图王.jpg (933.43 KB, 下载次数: 128)

线程状态_2345看图王.jpg

死锁.jpg (625.83 KB, 下载次数: 129)

死锁.jpg

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 排下版看着会舒服点,总结的不错!下次记得.

查看全部评分

38 个回复

正序浏览
赞一个,学习了
回复 使用道具 举报
学习了                                                      
回复 使用道具 举报
楼主高手 总结得很精辟 又复习了一下
回复 使用道具 举报
图片已保存
回复 使用道具 举报
这图好熟悉
回复 使用道具 举报
学习了...
回复 使用道具 举报
哇,这个图画的不错,总结得很好啊
回复 使用道具 举报
学习一下!!!!!
回复 使用道具 举报
总结的很棒~!不错
回复 使用道具 举报
根本楼主复习了一遍~~~
回复 使用道具 举报
总结的蛮多的,先留着。我快学到这了
回复 使用道具 举报
谢谢楼主分享,正准备复习呢
回复 使用道具 举报
总结的很好,又复习次了。
回复 使用道具 举报
不错哦~!  复制走啦!
回复 使用道具 举报
刚复习了一遍,  再看你这总结 很亲切啊  很全面
回复 使用道具 举报
再复习了下,总结的不错啊
回复 使用道具 举报
学习了一下
回复 使用道具 举报
感谢啊,正在学习多线程哪
回复 使用道具 举报
不错的多线程
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马