进程:正在进行中的程序(直译)
线程:进程中一个负责程序执行的控制单元(执行路径)
一个进程中可以多执行路劲,称之为多线程。
一个进程中至少要有一个线程。
开启多个线程是为了同时运行多部分代码。
每一个线程都有自己运行的内容,这个内容可以称之为线程要执行的任务。
多线程好处:解决了多部分同时运行的问题。
多线程弊端:线程太多会导致效率的降低。
其实应用程序的执行都是cpu在做着快速的切换完成的。这个切换是随机的。
JVM启动时就启动了多个线程,至少有两个线程可以分析出来。
1.执行main函数的线程。
该线程的任务代码都定义在main函数中。
2.负责垃圾回收的线程。
都在垃圾回收器中定义。
创建线程的目的是为了开启一条执行路径,去运行指定的代码和其他代码实现同时运行。
而运行的指定代码就是这个执行路径的任务。
jvn创建的主线程的任务都定义在main函数中。
而自定义的线程的任务在哪?
Thread类用于描述线程,线程是需要任务的。所以Thread类也对任务的描述。这个任务就是通过Thread类中的run方法来体现。也就是说,run方法就是封装自定义线程运行任务的函数。run方法中定义的就是线程要运行的任务代码。
开启线程是为了运行指定代码,所以只有继承Thread类,并重写run方法。将运行的代码定义在run方法中即可。
包(package)
对类文件进行分类管理。
给类提供多层的命名空间。
写在程序文件的第一行。
类名的全称是 包名.类名。
包也是一种封装形式。
包与包之间的类进行访问,被访问的包中的类必须是public的,被访问的包中类的方法也必须是public的。
public | protected | 什么都不加 | private | |
同一类中 | 可以访问 | 可以 | 可以 | 可以 |
同一包中 | 可以 | 可以 | 可以 | |
子类中 | 可以 | 可以 | ||
不同包中 | 可以 |
导入包:import
import packa.DemoA 导入了packa包中的DemoA类
import packa.* 导入了packa包中的所有类
导包的原则:用到哪个类,就导入哪个类。
Jar:java的压缩包