1.多线程定义
/*
多线程:java支持该技术
进程的定义:(正在进行中的程序)不直接执行,只是在分配该应用程序的运行空间
线程:执行路径,负责执行,负责进程中内容执行的一个控制单元,进程中肯定有线程。
一个进程中可以有多个执行路径,即称为多线程。
一个进程中至少有一个线程。
开启多个线程是为了同时运行多部分代码。
每一个线程都有自己运行的内容,这个内容称为线程要执行的任务。
真实来讲并不是同时执行。
cpu:
快速切换线程,看似同时运行。线程多,被CPU处理的频率就减少,切换时随机的。
JVM 启动时就启动了多个线程,至少有两个线程可以分析的出来。
1.执行main函数的线程
该线程的任务代码都在主函数中
2.负责垃圾回收的线程
都在垃圾回收器里定义。(底层内部完成的),每个对象都有能够回收的方法。(finalize() 方法)
*/
2.多线程实现
/*
多线程:java支持该技术
如何实现多线程:
*/
//正常执行
class Demo
{
private String name;
Demo(String name)
{
this.name = name;
}
public void show()
{
for(int i = 0;i<5;i++)
{
for(int j = -999;j<9999;j++){}
System.out.println(name+i);
}
}
}
class Th
{
public static void main(String[] args)
{
Demo d1 = new Demo("wangcai");
Demo d2 = new Demo("duoduo");
d1.show();
d2.show();
}
} //结果是先wangcai,在duoduo
//多线程执行
/*创建线程方式一:继承Thread 类
步骤:
1.定义一个类,继承Thread类
2.覆盖Thread类中的run方法
3.直接创建Thread的子类对象创建线程
4.调用start()方法开启线程。
*/
class Demo extends Thread
{
private String name;
Demo(String name)
{
this.name = name;
}
public void run()
{
for(int i = 0;i<5;i++)
{
for(int j = -999;j<9999;j++){}
System.out.println(name+i+ getName());//得到线程的名字,主线程的名字就是main
}
}
}
class Th
{
public static void main(String[] args)
{
/*
创建线程的目的是为了开启一条执行路径,取运行指定的代码和其他代码实现同时运行。
而运行的指定代码就是这个执行路径的任务。
jvm创建的主线程的任务都定义在了主函数当中,
而自定义的线程都定义在:
Thread类用于描述线程,线程是需要任务的。所以Thread类也对任务描述,这个任务就通过Thread类中的run()方法来体现。
也就是说,run方法就是封装自定义线程运行任务的函数。
run方法中定义的就是线程要运行的任务代码。
我们开启线程是为了运行指定代码,所以只有继承Thread类,并复写run方法。
将运行的代码定义在run方法中即可。
*/
// Thread t1 = new Thread();
Demo d1 = new Demo("wangcai");
Demo d2 = new Demo("duoduo");
d1.start();//开启线程,调用方法
d2.start();
}