说线程之前 ,先说什么是进程,进程是正在运行的程序,确切的来说是当一个程序进入内存中运行,
线程是进程中的一个执行单元(执行路径),负责当前进程中程序的执行,
一个进程中至少有一个线程。一个进程中是可以有多个线程的,
这个应用程序也可以称之为多线程程序。
简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程
来个例子:
public class Demo {
public static void main(String[] args) {
System.out.println(0/0);
function();
System.out.println(Math.abs(-9));
}
public static void function(){
for(int i = 0 ; i < 10000;i++){
System.out.println(i);
}
}
}
上面这个例子 直接报错,因为0/0是错误的 这个程序是一条main走到底的,但是第一个即错了 所以后面的程序无法执行,这个就是单线程
生活中也有单线程的例子:单线程程序:即,若有多个任务只能依次执行。当上一个任务执行结束后,下一个任务开始执行。如去 网吧上网,网吧只能让一个人上网,当这个人下机后,下一个人才能上网。
其实,多线程程序并不能提高程序的运行速度,但能够提高程序运行效率,让CPU的使用率更高。
java的虚拟机支持多线程
那多线程怎么来写呢,这里面得先说Thread类
Thread类介绍
A:Thread类介绍:Thread是程序中的执行线程。Java 虚拟机允许应用程序并发地运行多个执行线程。
发现创建新执行线程有两种方法。
?a:一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。创建对象,开启线程。run方法相当于其他线程的main方法。
?b:另一种方法是声明一个实现 Runnable 接口的类。该类然后实现 run 方法。然后创建Runnable的子类对象,传入到某个线程的构造方法中,开启线程。
例子如下
public class ThreadDemo {
public static void main(String[] args) {
SubThread st = new SubThread();
SubThread st1 = new SubThread();
st.start();
st1.start();
for(int i = 0; i < 50;i++){
System.out.println("main..."+i);
}
}
}
/*
* 定义子类,继承Thread
* 重写方法run
*/
public class SubThread extends Thread{
public void run(){
for(int i = 0; i < 50;i++){
System.out.println("run..."+i);
}
}
}
原文:https://www.cnblogs.com/lijun6/p/9380048.html