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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值