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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小青年oh 中级黑马   /  2016-3-28 23:29  /  859 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一、
1、多线程概述

什么是多线程?
一个应用程序有多条执行路径,线程是依赖于进程而存在的。
------------------------------------
二、多线程的实现方式一

1、创建多线程的方式一?
A创建一个类这个类继承Thread类
B重写run方法
C启动线程并执行

stat()方法做了几件事?
启动线程,自动调用run方法


线程越多越好吗?  
不是,因为没开一个线程系统必然会为它分配内存。

Thread类下setName,getName方法的作用?

setName()为线程命名
getName()获取线程的名称
-------------------------------------------
三、线程执行的随机性

1、为什么会出现线程执行的随机性?
因为在某个时间点CPU只会执行一个线程。
----------------------------------------------
四、多线程的实现方式二
1、实现多线程的方式二
A创建一个类去实现Runnable接口
B重写run方法
C创建MyRunnable对象mr
D把对象mr作为参数传递到Thread类的构造方法中,得到了Thread对象。

注意事项:
第二种方式可以直接调用getName()方法可以获取当前线程的名字吗?
不能不能直接调用,但是可以间接调用


----------------------------------------------------
五、有了Thread类为什么还要有实现Runnable接口
1、避免了单继承的局限性
2、只创建了一个资源对象节省空间,更好的实现了数据操作分离。


--------------------------------------------------------
六、线程的生命周期
1、线程的状态有
新建:创建一个线程对象
就绪:具备执行资格,不具备执行权
可能出现阻塞状态:都不具备
运行:都具备
死亡:线程对象变成垃圾,等待垃圾回收器回收

-----------------------------------------------------


十、十一、用实现Runnable接口的方式模拟卖票出现了,重复和负数的情况,及解决方法
1、出现重复和负数的产生原因:
因为线程随机性和延迟性

2、同步关键字是?
synchronized
3、如何解决重复和负数的情况:
加锁

4、多线程程序出问题的判断条件?

1、看是否有共享数据
2、看共享数据是否被多条语句操作
3、是否在多线程程序中
----------------------------------------------------
十二、 测试不同同步机制的锁对象
什么是同步代码块、同步方法:

同步代码块就是把锁加在方法中
同步方法其实就是把锁加在方法声明上


同步代码块和同步方法的锁对象是谁:
同步代码块:任意对象(这里不要用匿名对象)
同步方法的锁对象是谁this
静态的同步方法锁对象是该类的字节码文件对象

什么时候考虑用同步代码块的方式锁呢?
当方法中不是所有代码都需要加锁的时候

什么时候考虑用同步方法的方式锁呢?
当方法中所有的代码都需要加锁的时候。
---------------------------------------------------



1、熟练掌握多线程实现的 方式一 方式二
2、自己分组互相讲一下多线程的生命周期
3、自己把上课敲的重点知识回顾一遍。
4、回顾Xmind
5、用方式二模拟多线程卖票,要求卖票的时候不能有相同的票,和负数。
6、面试题:请写出一个死锁的代码。


1 个回复

倒序浏览
学习学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马