今天要学习的新知识有许多,加上其他的事情也需要处理,所以今天更新的时间比往常要晚一些。
文章目录
1.线程简介
2.创建线程的方式
3.代码举例
1.线程简介
今天来说一说线程,这部分知识随着研究的深入比较难理解,但是初期还是比较简单的,说起线程要先从程序和进程说起,首先程序可以理解为是一组静态的代码,而进程是正在运行中的程序,即静态的代码运行起来了,操作系统会以进程为单位,分配系统资源(即CPU的时间碎片)供进程中的线程使用,进程是资源分配的最小单位,最后组成进程的是线程,线程是正在执行程序中的小单元,允许许多线程同时执行,即多线程,那么来说说多线程的优势:1.发挥多处理器的强大能力;2.在单处理器系统上获得更高的吞吐率;3.建模的简单性;4异步事件的简化处理;线程是操作系统级别,我们无法控制线程的执行,只能对线程进行创建,睡眠,唤醒等操作(就目前对线程的理解)
2.线程的创建方式
方法一:继承(extend Thread)
(1) 自己描述一个类
(2)继承父类Thread
(3)重写run方法
(4)创建一个测试类,然后new线程对象,调用start()方法使线程进入就绪状态;
方法二:实现(implements Runnable):
(1)自己描述一个类
(2)实现Runnable接口
(3)重写run方法
(4)创建一个测试类,new线程对象,这里在调用start()方法前需要用Thread类包起来
(5)new一个Thread类,将线程对象放入Thread类中
(6)这样在调用start()方法使线程进入就绪状态;
两种创建方法各有其特殊的用处,如果我们没有特殊要求,我们把方法一玩明白就可以啦
3.代码举例
哈哈哈,因为方法二比方法一要复杂一些,所以这里使用方法二作为代码演示案例
思路:
线程可以理解为,许多小人按照一套规则(run方法)做事,为了区分,我们定义了一个小人儿(线程对象)姓名属性,以区分小人儿(线程对象),使用含参构造方法为小人儿(线程对象)取名,然后所有小人儿(线程对象)按照规则(run方法)去执行,小人儿创建好,并写好规则后,我们需要使用start()方法使线程进入准备状态,当我们手动点击运行时,就是跑的过程,预备备!!跑!!
public class Running implements Runnable{
//我们自己写一个Running类,然后实现Runnable接口
//这样我们我们写的类就是线程类了
private String name;
//小人的姓名
public Running(){}
public Running(String name){
this.name = name;
}
//使用含参构造方法为小人取名
public void run(){
for(int i=1;i<100;i++){
System.out.println(name+"跑到了"+i+"米");
}
}
//上面的run()方法就是定义的一套规则,所有的线程小人必须按照run()方法中描述的那样执行
好的,小人儿做事的规则已经定义好了,接下来就是创建的过程,在主方法中通过new()我们写好的线程类创建线程对象,但是我们写好的线程类是通过实现得到的,没有start()方法,所以需要使用Thread类进行构建(可以这样认为,通过实现方式创建的线程类就比通过继承创建的线程类多一步构建的过程),使用构建的线程类调用start()方法
//主方法调用跑步类,使用方法二创建线程
public static void main(String[] args) {
Running r1 = new Running("苏炳添");
Running r2 = new Running("博尔特");
Running r3 = new Running("加特林");
//构建
Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);
Thread t3 = new Thread(r3);
t1.start();
t2.start();
t3.start();
}
最后总结一下:
通过继承或者实现,我们自己定义一个线程类,在我们自己写的线程类中,重写run()方法,让多个线程对象按照run()方法定义好的规则运行,然后创建线程对象,让线程对象进入就绪状态start(),最后执行程序。
页面更新:2024-04-21
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号