黑马程序员技术交流社区
标题:
多线程部分笔记
[打印本页]
作者:
sxwnzbn
时间:
2015-9-17 10:26
标题:
多线程部分笔记
多线程:
创建线程的目的:开启新路径让多部分代码实现同时执行;
创建多线程2中方法之一:继承Thread类:
1,创建一个类继承Thread类,
2,覆写run()
3,创建该类对象并调用start();
多线程调用run()和start()区别:
调用run()不开启线程,仅是对象调用方法;
调用start方法开启线程,并让jvm调用run()在开启的线程中执行;
继承Thread类的原理:
Thread类描述线程事物,具备线程应该有的功能;
那为什么不直接创建Thread类的实例来调用start()开启线程?那是因为Thread类的run()不做任何事情,更是因为run()没有我们定义给线程要执行的代码(线程任务)
之前所说的主线程的任务定义在main(),而我们自定义的线程需要执行的代码(线程任务)放在覆写的run();既然Thread类已经定义了线程任务的位置,那么我们只要在位置中定义任务代码即可;
创建线程2种方法之二:
1,定义一个类实现Runnable接口;
2,覆写run();
3,创建该类的实例对象;例如Demo d=new Demo();//注意线程类只有是Thread类或者他的子类,自己定义的类不是线程类;
4,创建Thread类的实例对象,并将该类作为参数传给Thread类的实例对象:Thread t=new Thread(d);
5,开启线程:利用线程类Thread调用自己的start():t.start();
多线程中的异常:相互之间的线程是独立的,假如有主线程main和自己定义的线程Thread-0;那么main结束了就退出,此时不会影响Thread-01,同理Thread-01也不会影响main线程,即使他俩有一个发生异常;
实现Runnable接口的原理:
既然可以继承Thread类覆写它的run()再new对象调用它的start()来执行run()中的任务代码,那么为何还要使用Runnable接口来是达到多线程并发访问的目的?
这是因为开发中不能保证你定义的类没有父类从而可以去继承父类Thread(java中单继承),故要实现Runnable
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2