Java笔记 线程 ( 一) -Thread
本帖最后由 可爱的静静 于 2017-8-16 18:35 编辑多线程
进程:是一个正在执行的程序
每一个进程都有一个顺序,该顺序是一个执行路径,或者叫一个控制单元
线程:就是进程中的一个独立控制单元
线程在控制着进程的执行
一个进程至少有一个线程
例如:
迅雷可以同时下载 那迅雷就相当于一个进程 而同时下载的路径就是线程
例如:JavaVM(虚拟机)启动的时候会有一个进程 java.exe(一个程序)
进程中至少有一个线程负责java程序进程执行
而且这个进程进行的代码在于main方法中
该线程称之为主线程(也就是main方法叫做主线程 控制程序的执行)
多线程意义:
程序可以同时执行,如果是同时执行下载 可以提高效率
线程的创建方式(自定义的代码中自定义一个线程)
Thread类
线程 是程序中的执行线程。Java 虚拟机允许应用程序并发地运行多个执行线程。
创建方式两个方法:
1一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。
public void run()
如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。
2创建线程的另一种方法是声明
实现 Runnable 接口的类
自定义步骤:
1自定义类继承Thread
2覆盖run
3调用start方法-
方法作用:启动线程 调用run方法
例子:import java.lang.Thread;
public class sport {
public static void main(String[] args) {
// TODO Auto-generated method stub
walk a=new walk();
a.start();
for(int i=0;i<10;i++)
System.out.println("run"+i);
}
}
class walk extends Thread{
public void run(){
for(int i=0;i<10;i++)
System.out.println("walk"+i);
}
}
执行顺序:首先执行主线程 main当执行到线程创建对象后 还没有实际的调用创建的线程 当运行到start方法的时候 单线程 变成 多线程
如图
输出结果:run0
walk0
walk1
run1
walk2
run2
walk3
walk4
run3
walk5
walk6
walk7
walk8
run4
walk9
run5
run6
run7
run8
run9
看到结果 有时候输出run有时候输出walk而且没有规则 每一次运行都输出不同的结果 那是因为实际上不是多线程同时执行的 只是cpu快速的一时使用主线程 一时使用新建的线程 就是哪个线程抢到cpu就执行哪个 只是cpu快速执行 看上去好像同时执行
明确一点 在某一刻 只能由一个程序在执行 (多核除外)
多线程的一个特性 随机性
页:
[1]