线程相关概念和线程的基本使用
【摘要】 线程相关概念程序是为完成特定任务,用某种语言编写的一组指令的集合。简单地说就是我们写的代码。进程进程是程序的一次执行过程,或是正在运行的一个程序。是动态过程:有它自身的产生,存在和消亡的过程线程(1)线程是由进程创建的,是进程的一个实体(2)一个进程可以拥有多个线程其它相关概念单线程:同一个时刻,只允许执行一个线程多线程:同一个时刻,可以执行多个线程并发:同一个时刻,多个任务交替执行,造成一...
线程相关概念
程序
是为完成特定任务,用某种语言编写的一组指令的集合。简单地说就是我们写的代码。
进程
进程是程序的一次执行过程,或是正在运行的一个程序。是动态过程:有它自身的产生,存在和消亡的
过程
线程
(1)线程是由进程创建的,是进程的一个实体
(2)一个进程可以拥有多个线程
其它相关概念
单线程:同一个时刻,只允许执行一个线程
多线程:同一个时刻,可以执行多个线程
并发:同一个时刻,多个任务交替执行,造成一种“貌似同时”的错觉,简单的说,单核cpu实现的多任
务就是并发。
并行:同一个时刻,多个任务同时执行。多核cpu可以实现并行。
线程基本使用
创建线程的两种方式
(1)继承Thread类,重写run方法
(2)实现Runnable接口,重写run方法
线程应用案例——继承Thread类
(1)请编写程序,开启一个线程,该线程每隔一秒,在控制台输出“喵喵喵”
(2)对上题改进:当输出80次时“喵喵喵”时,结束该线程
(3)使用JConsole监控线程执行情况
public class Thread01 {
public static void main(String[] args) throws InterruptedException {
//创建 Cat 对象,可以当做线程使用
Cat cat = new Cat();
//源码
/*
(1)
public synchronized void start() {
start0();
}
(2)
//start0() 是本地方法,是 JVM 调用, 底层是 c/c++实现
//真正实现多线程的效果, 是 start0(), 而不是 run
private native void start0();
*/
cat.start();//启动线程-> 最终会执行 cat 的 run 方法
//cat.run();
//run 方法就是一个普通的方法, 没有真正的启动一个线程,就会把 run 方法执行完毕,才向下执行
//说明: 当 main 线程启动一个子线程 Thread-0, 主线程不会阻塞, 会继续执行
//这时 主线程和子线程是交替执行.. System.out.println("主线程继续执行" + Thread.currentThread().getName());//名字 main
for(int i = 0; i < 60; i++) {
System.out.println("主线程 i=" + i);
//让主线程休眠
Thread.sleep(1000);
}
}
}
//1. 当一个类继承了 Thread 类, 该类就可以当做线程使用
//2. 我们会重写 run 方法,写上自己的业务代码
//3. run Thread 类 实现了 Runnable 接口的 run 方法
/*
@Override
public void run() {
if (target != null) {
target.run();
}
}
*/class Cat extends Thread {
int times = 0;
@Override
public void run() {//重写 run 方法,写上自己的业务逻辑
while (true) {
//该线程每隔 1 秒。在控制台输出 “喵喵喵”
System.out.println("喵喵喵" + (++times) + " 线程名=" + Thread.currentThread().getName());
//让该线程休眠 1 秒 ctrl+alt+t
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(times == 80) {
break;//当 times 到 80, 退出 while, 这时线程也就退出..
}
}
}
}
线程应用案例——实现Runnable接口
说明:
(1)java是单继承的,在某些情况下一个类可能已经继承了某个父类,这时再用继承Thread类方法来
创建线程显然不可能了。
(2)java设计者们提供了另外一个方式创建线程,就是通过实现Runnable接口来创建线程。
应用案例:
请编写的程序,该程序可以每隔一秒,在控制台输出“hi!”,当输出10次后,自动退出。请使用实现
Runnable接口的方式实现。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)