关于线程的学习

来源:互联网 发布:淘宝美工书籍推荐 编辑:程序博客网 时间:2024/06/04 19:34

http://blog.csdn.net/tornado886/article/details/4524346#comments

关于线程的学习:
(1)线程有两种实现方式:
1.继承Thread类,并重写run()方法。
2.实现Runnable接口,实现run()方法。
(2)关于线程中run()和start()的区别:
1.run()当作普通方法的方式调用,程序还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码
2.start()方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码
(3)线程如何设置为守护线程:设置线程对象为daemon(守护)线程或实例化对象方法并设置为守护线程。
例:1.设置线程对象为daemon(守护)线程

    Thread thread1 = new Thread();    thread1.setDaemon(true);
2.实例化对象方法并设置为守护线程
    new Thread().setDaemon(true);

(4)关于线程中守护线程的问题
程序中只有守护进程存在的时候,才可以退出。
当java虚拟机中存在守护线程运行的时候,虚拟机最后会关闭,但有个前提:当所有常规线程运行完毕以后,守护线程不管运行到哪里,虚拟机都会退出运行。
所以在守护线程,不建议写一些会影响程序的业务逻辑。否则程序会出现什么样的问题难以预测。
(5)线程能被强制退出吗?
可以,使用System.exit(0)强制正常退出。
如下为异常退出,一般非0的退出即为异常退出,也可实现线程退出:
System.exit(1);
(6)Thread()的run()和start()的区别:
run()方法:在本线程内调用该Runnable对象的run()方法,可以重复多次调用;
start()方法:启动一个线程,调用该Runnable对象的run()方法,不能多次启动一个线程;

0 0
原创粉丝点击