进程和线程的区别
进程:进程是系统进行资源分配和调度的一个独立单位.
线程:进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.
一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.
相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。
实现多线程的方法:
继承thread类
Thread类是java.lang包中定义的,一个类只要继承了thread类就可以称为多线程的操作类。在thread类中必须覆写run()方法,此方法为多线程主体。
举例:
1 package com.feimao.a1; 2 class MyThread extends Thread{ 3 private String name; 4 public MyThread(String name){ 5 this.name = name; 6 } 7 public void run(){ 8 for(int i = 0 ; i <= 10 ; i++){ 9 System.out.println(name + "运行 , i = " + i); 10 } 11 } 12 } 13 public class ThreadDemo01 { 14 public static void main(String args[]){ 15 MyThread mt1 = new MyThread("线程 A"); 16 MyThread mt2 = new MyThread("线程 B"); 17 mt1.run(); 18 mt2.run(); 19 } 20 }
以上程序是先执行完A再执行B,还是按照古老的形式调用,并没有执行并发操作。但是如果想要启动一个线程,必须使用thread中定义的start()方法。一旦调用start()方法,其实最终调用的还是run()方法。
1 package com.feimao.a1; 2 3 class MyThread extends Thread{ 4 5 private String name; 6 7 public MyThread(String name){ 8 9 this.name = name; 10 11 } 12 13 public void run(){ 14 15 for(int i = 0 ; i <= 10 ; i++){ 16 17 System.out.println(name + "运行 , i = " + i); 18 19 } 20 21 } 22 23 } 24 25 public class ThreadDemo01 { 26 27 public static void main(String args[]){ 28 29 MyThread mt1 = new MyThread("线程 A"); 30 31 MyThread mt2 = new MyThread("线程 B"); 32 33 mt1.start(); 34 35 mt2.start(); 36 37 } 38 39 }
哪个线程先抢到CPU资源先执行。
实现runnable接口