您的位置:首页 > 编程语言 > Java开发

java多线程总结

2012-09-18 08:27 260 查看
java的多线程技术相对来说还是比较好的,下面就简单的做个总结吧!由于本人也没什么经验,不到之处望各位博友海涵,谅解,纠正指出!

首先是如何创建线程,总的来说有两种方式来创建线程,

1、继承Thread类,重写Thread类的run()方法,例如:class T extends Thread{},然后实例化该类对象,T t=new T(); 因为T继承自Thread类,t可以直接调用start()方法,然后JVM就会自动调用该类重写的run()方法,启动一个线程。

上面创建线程的方法虽然看起来挺好的,但是java中不允许多重继承,如果想多继承几个类,那就麻烦了,所以有了下面第2种创建线程的方法

2、实现Runnable接口,创建线程

Runnable接口中只有一个方法,那就是run()方法。例如,class R implements Runnable{},

首先要实例化R,即:R r=new R(); Thread tr=new Thread(r); tr.start();这样就可以启动一个线程。

建议最好使用实现Runnable接口这个方式来创建线程,以避免java中单继承带来的问题。

3、run()方法和start()方法的区别 方法调用和线程启动
直接调用run()方法就会等到run()中的内容执行完后,再回去执行main方法;
而用strat()启动线程,进入就绪状态,JVM就会调用线程的run()方法,和main方法交替执行。
run()结束,线程就结束。

4、wait sleep区别:

wait时别的线程可以访问锁定对象 (调用wait方法的时候必须锁定该对象)

Wait方法在java.lang.Object中,是Object类的方法,

sleep时别的线程也不可以访问锁定对象

5、线程同步:

synchronized(this){

.......

......

}

当执行这段代码的过程中锁定当前对象

6、常用方法:

public static void yield() 暂停当前正在执行的线程对象,并执行其他线程。

public static Thread currentThread() 返回对当前正在执行的线程对象的引用。

public static void sleep(long millis)

throws InterruptedException 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)。该线程不丢失任何监视器的所属权。

public final void setPriority(int newPriority) 更改线程的优先级。

public final int getPriority() 返回线程的优先级。

Thread.currentThread()----------------->拿到当前线程
public static Thread currentThread()返回对当前正在执行的线程对象的引用。
public final void join()throws InterruptedException等待该线程终止。
本文出自 “远方_chen” 博客,请务必保留此出处http://chenshirong.blog.51cto.com/3945427/996769
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: