JAVA多线程知识汇总多线程知识汇总
主要介绍了JAVA多线程的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以
了解下
线程概念线程概念
进程:启动一个应用程序就叫一个进程。 接着又启动一个应用程序,这叫两个进程。每个进程都有一个独立的内存空间;进
程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。
线程:线程是在进程内部同时做的事情,一个进程中可以有多个线程,这个应用程序也可以称之为多线程程序。
一个程序运行后至少有一个进程,一个进程中可以包含多个线程
线程调度:
分时调度:所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间。
抢占式调度:优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用
的为抢占式调度。
创建多线程创建多线程
方法一:创建方法一:创建Thread类的子类类的子类
创建Thread类的子类,并重写该类的run()方法,设置线程任务。
创建Thread子类的实例,即创建了线程对象
调用线程对象的start()方法来启动该线程
//方法一:
//定义Thread类的子类,并重写该类的run()方法
public class MyThreadDemo01 extends Thread {
@Override
public void run() {
for (int i = 0; i < 20 ; i++) {
System.out.println(getName()+"-->"+i);
}
}
}
//主线程
public class MainThread01 {
public static void main(String[] args) {
//创建Thread子类的实例,即创建了线程对象
MyThreadDemo01 thread01 = new MyThreadDemo01();
//调用线程对象的start()方法来启动该线程
thread01.start();
for (int i = 0; i < 10 ; i++) {
System.out.println(Thread.currentThread().getName()+"-->"+i);
}
}
}
public static Thread currentThread() :返回对当前正在执行的线程对象的引用。
public String getName() :获取当前线程名称。
public void start() :导致此线程开始执行; Java虚拟机调用此线程的run方法。
public void run() :此线程要执行的任务在此处定义代码。
public static void sleep(long millis) :使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行)。
方法二:实现方法二:实现Runnable接口接口
定义Runnable接口的实现类,并重写该接口的run()方法,设置线程任务
创建Runnable实现类对象
创建Thread类的对象,并且该对象构造方法中传递Runnable实现类对象
调用Thread对象的start()方法来启动线程
//方法二:
//定义Runnable接口的实现类,并重写该接口的run()方法,设置线程任务
public class MyThreadDemo02 implements Runnable{