一、线程概述:
线程可以说是一个应用程序或者说是一个软件;线程是一个进程中的场景(进程好比一个公司,线程好比公司里的员工)
二、进程与线程的关系
一个进程可以创建多个线程;线程是单独的不共享资源;
线程中的堆内存和方法区内存是共享的;但是栈内存是独立的,一个线程是一个栈;
栈之间互不打扰,各自执行各自的,这就是多线程并发
三、实现线程的方法:
第1种方法:编写一个类,直接继承java.lang.Thread;重写run()方法
//创建一个分支对象
MyThread myThread = new MyThread();
// myThread.run();//此方法是普通调用,不会开辟新的栈空间,不会启动线程;(单线程)
//启动线程:start();
//start()的作用:启动一个分支程序,在jvm中开辟一个新的空间;
// * 这段代码任务完成后,瞬间就结束,线程就启动成功;这段代码目的是开辟出一个新的栈空间;
myThread.start();//会启动线程
for (int i = 0; i <20 ; i++) {
System.out.println("主线程-----"+i);
}
//定义一个类:class MyThread extends Thread{
@Override
public void run() {
//编写程序,这个程序运行在分支栈中
for (int i = 0; i < 100; i++) {
System.out.println("分支线程----"+i);
}
}
第二种方法:直接编写一个类,实现Runnable接口,实现run()方法
//创建一个可运行类的对象
MyRunnable runnable = new MyRunnable();
//将可运行的对象封装成一个线程对象
Thread thread = new Thread(runnable);
//启动线程
thread.start();
for (int i = 0; i < 100; i++) {
System.out.println("主线程-----"+i);
}
}
}
//编写一个类;注意该类只是一个可运行的线程类,还不是一个线程
//分支线程;
class MyRunnable implements Runnable{
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("分支线程-----"+i);
}
}
标签:run,Thread,一个,知识,System,线程,println,多线程 From: https://www.cnblogs.com/nzm-2019/p/16626012.html