程序:可以理解为一组静态的代码
进程:正在进行的程序 静态的代码 运行起来
线程:正在执行程序中的小单元
1.主线程 系统线程
2.用户线程 main
3.守护线程(精灵)GC
线程--操作系统级别 CPU
如何在java中创建线程 让线程执行 多线程
掌握每一个线程的几种不同状态 状态之间如何切换
new start() CPU分配(run()) wait() exception over
创建线程---就绪状态---执行状态---等待/挂起---异常/消亡---
| |
|__________________|
notify/notifyAll
实现线程的过程 (方式1)
1.自己描述一个类
2.继承父类 Thread
3.重写run方法
4.new一个线程对象 调用start()方法 让线程进入就绪状态
实现一个多人跑步的小例子
package test0603;
public class RunningMan extends Thread{
private String name;
public RunningMan(){
}
public RunningMan(String name){
this.name=name;
}
//重写run方法
public void run(){
for(int i=1;i<=100;i++){
System.out.println(this.name+"跑到第"+i+"米");
}
}
}
package test0603;
public class TestMain{
public static void main(String[] args){
RunningMan r1=new RunningMan("张三");
RunningMan r2=new RunningMan("李四");
RunningMan r3=new RunningMan("王五");
//调用start方法 让线程进入就绪状态 CPU分配执行(无序)每次执行结果不一样
/*
r1.start();
r2.start();
r3.start();
*/
//run()方法是顺序执行
r1.run();
r2.run();
r3.run();
}
}
实现线程的过程(方式2)
1.自己描述一个类
2.实现一个父接口Runnable
3.重写run方法
4.new一个线程对象
package test0603;
public class RunningMan implements Runnable{
private String name;
public RunningMan(){
}
public RunningMan(String name){
this.name=name;
}
//重写run方法
public void run(){
for(int i=1;i<=100;i++){
System.out.println(this.name+"跑到第"+i+"米");
}
}
}
package test0603;
public class TestMain{
public static void main(String[] args){
RunningMan r1=new RunningMan("张三");
RunningMan r2=new RunningMan("李四");
RunningMan r3=new RunningMan("王五");
Thread t1=new Thread(r1);
Thread t2=new Thread(r2);
Thread t3=new Thread(r3);
//调用start方法 让线程进入就绪状态 CPU分配执行(无序)每次执行结果不一样
t1.start();
t2.start();
t3.start();
}
}
原文:https://www.cnblogs.com/canglongdao/p/13040286.html