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

java多线程并发(并不是同时运行)

2011-11-02 10:05 330 查看
public class MultThread extends Thread{
String name;
//初始化name变量
public MultThread(String name){
this.name=name;
}
//线程
public void run(){
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
System.out.println("Interrupt exception");
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("thread name: "+name);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Autgenerated method stub
//创建多个线程
MultThread mt1=new MultThread("one");
MultThread mt2=new MultThread("two");
MultThread mt3=new MultThread("three");
mt1.start();
mt2.start();
mt3.start();
//thread name: one
//	thread name: three
//thread name: two		为什么结果会是这样啊,难道不应该是先启动mt1么

}

}

多线程的特点就是启动后由虚拟机进行调度(java抢占模式),因此输出的结果并不是有序的

下面的是我一些摘写记录,分享一下

Thread t=Thread.currentThread();----->获得当前线程,即主线程

创建线程----》继承java.lang.Thread或者实现java.lang.Runnable接口,并实现run()方法

新建的线程不会自动开始运行,必须通过start()方法启动,如果不调用这个方法,线程不会自动运行,也就时说可以事先创建线程,在需要的事后才启动他们

继承Thread的线程

Mythread t=new Mythread();

t.start();

实现Runnable()接口的线程

Myrun m=new Myrun();

Thread t=new Thread(m);

t.start();

用new语句创建线程对象处于新建状态,在堆区中也分配了该线程对象的内存

当一个线程对象创建后,其他线程调用它的start()方法,该线程就近如就绪状态,该线程位于可运行池中,等待获得cpu使用权

运行状态:改状态的线程占用cpu执行程序代码,只有就绪状态的线程才有机会转到运行状态

阻塞:因某种原因放弃cpu,暂时停止运行,当线程处于阻塞状态时,java虚拟机不给线程分配cpu,直到线程重新进入就绪状态,才有机会转到运行状态

死亡:当线程推出run方法时,就进入死亡状态
http://wenku.baidu.com/view/d0d0f318a8114431b90dd8da.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: