线程
- 线程的概念
- 创建多线程
- 继承线程类
- 实现Runnable接口
- 匿名类
线程的概念
线程(Thread)和进程(Professor)的区别
进程:人吃饭是一个进程,接着狗吃骨头是一个进程,这叫两个进程。
线程:线程是在进程内部同时做的事情,比如在生活里面,有很多事情要做,比如人吃饭,狗吃骨头是同时进行的,这就是多线程实现的。
创建多线程
如下是两个进程分别执行:
package multiThread;public class Animal {private String name;private int year;Animal(){}Animal(String name,int year){this.name = name;this.year = year;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getYear() {return year;}public void setYear(int year) {this.year = year;}@Overridepublic String toString() {return "姓名:"+ name + ",年龄:" + year + ",来干饭了";}
}
package multiThread;import java.util.ArrayList;public class main {public static void main(String[] args) {Animal a1 = new Animal();a1.setName("张三");a1.setYear(18);Animal a2 = new Animal();a2.setName("李四");a2.setYear(20);Animal a3 = new Animal();a3.setName("王五");a3.setYear(21);ArrayList<Animal>human = new ArrayList<>();human.add(a1);human.add(a2);human.add(a3);for (int i = 0; i < human.size(); i++) {System.out.println(human.get(i).toString());}Animal d1 = new Animal("小黑",2);Animal d2 = new Animal("大黄",3);Animal d3 = new Animal("旺财",4);ArrayList<Animal>dog = new ArrayList<>();dog.add(d1);dog.add(d2);dog.add(d3);for (int i=0;i<dog.size();i++){System.out.println(dog.get(i).toString());}}
}
继承线程类
package multiThread;public class Animal extends Thread {private String name;private int year;Animal(){}Animal(String name,int year){this.name = name;this.year = year;}@Overridepublic void run() {for (int i = 0; i < 10; i++) {System.out.println("姓名:"+ name + ",年龄:" + year + ",来干饭了");}}
}
package multiThread;public class main1 {public static void main(String[] args) {Animal a = new Animal("张三",18);Animal d = new Animal("旺财",3);a.start();d.start();}
}
实现Runnable接口
package multiThread2;public class Animal implements Runnable{private String name;private int year;Animal(){}public Animal(String name,int year){this.name = name;this.year = year;}@Overridepublic void run() {for (int i = 0; i < 10; i++) {System.out.println("姓名:"+ name + ",年龄:" + year + ",来干饭了");}}
}
package multiThread2;public class main {public static void main(String[] args) {Animal a1 = new Animal("张三",18);Animal a2 = new Animal("旺财",3);new Thread(a1).start();new Thread(a2).start();}
}
匿名类
package multiThread2;public class Animal{private String name;private int year;Animal(){}public Animal(String name,int year){this.name = name;this.year = year;}@Overridepublic String toString() {return "姓名:"+ name + ",年龄:" + year + ",来干饭了";}
}
package multiThread2;public class main {public static void main(String[] args) {Animal a1 = new Animal("张三",18);Animal a2 = new Animal("旺财",3);Thread t1 = new Thread(){public void run(){for (int i = 0; i < 10; i++) {System.out.println(a1);}}};t1.start();Thread t2 =new Thread(){public void run(){for (int i = 0; i < 10; i++) {System.out.println(a2);}}};t2.start();}
}
其实多线程是多个步骤同时进行