多线程

说线程之前 ,先说什么是进程,进程是正在运行的程序,确切的来说是当一个程序进入内存中运行,

线程是进程中的一个执行单元(执行路径),负责当前进程中程序的执行,
一个进程中至少有一个线程。一个进程中是可以有多个线程的,
这个应用程序也可以称之为多线程程序。

简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程

来个例子:

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