java中的线程

来源:互联网 发布:安卓一键转发后台源码 编辑:程序博客网 时间:2024/05/17 07:45

线程实现的两种方式

1.继承Thread

Thread类是在java.lang包中定义的。一个类只要继承了Thread类,同时覆盖了本类中的run()方法,则就可以实现多线程的操作了。

通过调用run方法使得线程开始执行,非常的有规律,先执行第一个对象,再执行第二个对象。并么没有实现交互的运行。

这样程序可以交替的运行。一旦调用start()方法,则会通过JVM找到run方法。

Start方法与run方法的区别

1、start()方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。
通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。然后JVM通过此Thread类调用方法run()来完成其运行操作的,这里方法run()称为线程执行体,它包含了要执行的这个线程的内容,run方法运行结束,此线程终止,而CPU再运行其它线程
2run()方法当作普通方法的方式调用,程序还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码。
如果直接用run方法,这只是调用一个方法而已,程序中依然只有主线程,只有这一个线程,其程序执行路径还是只有一条,这样就没有达到写线程的目的。
记住:线程就是为了更好地利用CPU,提高程序运行速率的!

使用继承Thread类来实现多线程,有一个很大的弊端。一个类只能一个父类。

2.实现Runnable接口

该接口只有一个没有返回值的run()方法。

使用实现Runnable接口的子类并没有定义start方法,只有通过Thread类的构造方法才可以启动多线程。

使用接口的好处:

1.避免了单继承的局限性,一个类可以实现多个接口。

2.适合资源的共享。

但是他们之间还是有联系的:就好像是代理模式。

线程的操作

1.设置和取得名字

设置名字:

public final void setName(String name)

public Thread(Runnable target,String name)

取得名字:
public final String getName()

取得当前线程:

public static Thread currentThread()

java执行一个java程序最少有多少个线程?

Main gc

2.线程的休眠
public static void sleep (long millis) throws InterruptedException

3.线程的中断

public void interrupt()

4.设置线程的优先级

在多线程的操作中,所有的代码实际上都是存在优先级的,优先级高的就有可能先执行,线程使用:public final void setPrioperity(int newPriority)

对于优先级来说在线程中有如下三种:

最高:public static final int MAX_PRIORITY

中等:public static final int NORM_PRIORITY

最低:public static final int MIN_PRIORITY

原创粉丝点击