要想知道什么是单线程第一步必须了解什么是进程,什么是线程。
什么是进程?
官方理解:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
我的理解:进程总的来说就是软件的一次运行,举个栗子:当你点击软件完成的那一刻就是一个进程,这个进程由计算机调度到CPU进行控制和运算。
进程是一个实体。每一个进程都有它自己的地址空间。
什么是线程?
官方理解:线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。线程是独立调度和分派的基本单位。线程可以为操作系统内核调度的内核线程,如Win32线程;由用户进程自行调度的用户线程,如Linux平台的POSIX Thread;或者由内核与用户进程,如Windows 7的线程,进行混合调度。
我的理解:线程依赖与进程,一个进程可以有多个线程,可以理解为线程就是进程的子类。
下面开始贴代码:
单线程的简单实现:
- 线程的实现
要想实现线程第一步需要继承线程重写它的run方法(当然还有很多种方法也可以用runnable下个文章写):
package Thread.thread;
public class mythread extends Thread {
@Override
public void run() {
for (int i=0;i<=20;i++)
System.out.println("run:"+i);
}
}
这样就可以算完成几个简单的线程实现类了
- 实体类
package Thread.thread;
public class person {
private String name;
public void run()
{
for (int i=0;i<=20;i++)
System.out.println(name+"-->"+i);
}
public person() {
}
public person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
- 线程的创建和运行
package Thread.thread;
public class demo1 {
public static void main(String[] args) {
person p1=new person("小强");
p1.run();
person p2=new person("旺财");
p2.run();
mythread mt=new mythread();
mt.start();
for (int i=0;i<=20;i++)
System.out.println("main:"+i);
}
}
- 运行结果
可以看到线程有秩序的一一输出但单线程是效率低往往是不受欢迎的,线程需要理解多线程、线程安全性、线程怎么抢占、运行的步骤等等…