创建线程的方式一
1. 继承Thread类
getName()是获取线程的名字。
执行后的效果:
问题: 先按照顺序运行完了张三,然后接着再按照顺序运行完李四,我们想要的效果是张三和李四做资源的争夺战,也就是先是张三然后李四,没有顺序执行。这就证明多线程没有起到效果。
2. 需要复写run方法,把要执行的任务放在run方法中。
运行效果:
问题: 先按照顺序运行完了张三,然后接着再按照顺序运行完李四,我们想要的效果是张三和李四做资源的争夺战,也就是先是张三然后李四,没有顺序的执行。这就证明多线程没有起到效果。
3. 调用start()方法启动线程
效果:
达到了我们预期的效果。
线程的使用细节:
- 线程的启动使用父类的start()方法
- 如果线程对象直接调用run(),那么JVN不会当作线程来运行,会认为是普通的方法调用。
- 线程的启动只能由一次,否则抛出异常
- 可以直接创建Thread类的对象并启动该线程,但是如果没有重写run(),什么也不执行。
- 匿名内部类的线程实现方式