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

来源:互联网 发布:linux 创建文件路径 编辑:程序博客网 时间:2024/06/03 19:05
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 blocke.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

原创粉丝点击