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
相关文章推荐
- java中如何实现多进程并发?注意不是多线程 - ITeye问答(转载)
- [Java] 转:多线程 (并发)总结
- Java 从单核到多核的多线程(并发)
- 编写高质量代码:改善Java程序的151个建议(第8章:多线程和并发___建议118~121)
- Java中多线程并发体系知识点汇总
- Java多线程-并发协作(生产者消费者模型)
- Java多线程与并发应用-(3)-传统线程通信技术及生产者消费者模式
- Java中多线程并发处理方式
- Java多线程之并发容器(五)
- JAVA之旅(十二)——Thread,run和start的特点,线程运行状态,获取线程对象和名称,多线程实例演示,使用Runnable接口
- Java 多线程并发编程之 Synchronized 关键字
- 【Java多线程与并发库】16.java5阻塞队列的应用
- Java多线程、并发基础面试知识汇总
- 在java中两个线程同时运行是怎么变化的
- java python php 经典开发流程 开发效率 运行效率&并发&可扩展
- JAVA多线程和并发
- java多线程并发(三)(中断线程)
- 七、Java多线程与并发
- Java多线程与并发库高级应用-Callable与Future的应用
- Java多线程实现同时输出