0基础学java_线程

进程和线程的区别

进程:进程是系统进行资源分配和调度的一个独立单位.

线程:进程的一个实体,是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接口