java多线程实例---很有用 详细介绍
Posted zhangtian6691844
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java多线程实例---很有用 详细介绍相关的知识,希望对你有一定的参考价值。
实现线程的方式有两种: 1、继承java.lang.Thread,并重写它的run()方法,将线程的执行主体放入其中。 2、实现java.lang.Runnable接口,实现它的run()方法,并将线程的执行主体放入其中。 ==多线程的执行逻辑: 当主线程被挂起时, 其它就绪的线程会根据选择最
实现线程的方式有两种:
1、继承java.lang.Thread,并重写它的run()方法,将线程的执行主体放入其中。
2、实现java.lang.Runnable接口,实现它的run()方法,并将线程的执行主体放入其中。
1、继承java.lang.Thread,并重写它的run()方法,将线程的执行主体放入其中。
2、实现java.lang.Runnable接口,实现它的run()方法,并将线程的执行主体放入其中。
==>多线程的执行逻辑:
当主线程被挂起时, 其它就绪的线程会根据选择最高优先级的来执行;
当主线程的挂起时间 > 子线程的执行时间时,子线程执行完后回到主线程,等待主线程醒来.
当主线程的挂起时间 < 子线程的执行时间时,主线程挂起时间到的,自动醒来,回到主线程,此时可以判断子线程是否存在,若有,可stop之.
当主线程被挂起时, 其它就绪的线程会根据选择最高优先级的来执行;
当主线程的挂起时间 > 子线程的执行时间时,子线程执行完后回到主线程,等待主线程醒来.
当主线程的挂起时间 < 子线程的执行时间时,主线程挂起时间到的,自动醒来,回到主线程,此时可以判断子线程是否存在,若有,可stop之.
(2)
两种方式的区别:
继承Thread类的方式实现起来较为简单,但是继承它的类就不能再继承别的类了,因此也就不能继承别的类的有用的方法了。而使用是想Runnable 接口的方式就不存在这个问题了,而且这种实现方式将线程主体和线程对象本身分离开来,逻辑上也较为清晰,所以推荐大家更多地采用这种方式。
两种方式的区别:
继承Thread类的方式实现起来较为简单,但是继承它的类就不能再继承别的类了,因此也就不能继承别的类的有用的方法了。而使用是想Runnable 接口的方式就不存在这个问题了,而且这种实现方式将线程主体和线程对象本身分离开来,逻辑上也较为清晰,所以推荐大家更多地采用这种方式。
run()方法中包含的是线程的主体,也就是这个线程被启动后将要运行的代码,它跟线程的启动没有任何关系。
上面两种实现线程的方式在启动时会有所不同。
# ThreadTest tt = new ThreadTest();
# // 启动线程
# tt.start();
#
#
#
#
#
#
线程的状态:
(3)
实例一:
import java.io.*;
//多线程编程
public class MultiThread
{