Java基础之线程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java基础之线程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含8340字,纯文字阅读大概需要12分钟。
内容图文
文章目录
线程
名词解释
程序:即为完成某种特定任务,用某种语言编写的一组指令的集合。即一段静态的代码。
进程:即就是正在执行的程序,
线程:进程可进一步细化为线程,是进程内部的最小执行单元。
线程和进程之间的关系
- 一个进程可以包含多个线程,一个进程至少包含一个线程(主线程)
- 一个线程只能属于一个进程,在主进程中可以创建并启动其它的线程
- 一个进程内的所有线程共享该进程的内存资源
多线程
即就是在一个进程中可以有多个线程任务
- 优点:
- 同时并发执行多个任务
- 最大限度地降低CPU的闲置时间,提高CPU的利用率
创建线程的方式
- 继承Thread类的方式:线程代码存放Thread子类run方法中。
- 实现Runnable接口的方式:线程代码存放在接口的子类的run方法中。
代码示例
方式1:extends Thread
/**
* 创建线程方式1 extends Thread
*
* @author ASUS
*
*/
public class ExtendsThread extends Thread {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("methodrun::" + i);
}
}
}
- 测试类
public class TestExtendsThread {
/**
* main方法其实就是启动java主线程的任务
*
*/
public static void main(String[] args) {
// 在main线程中创建和启动另外一个线程
ExtendsThread extendsThread = new ExtendsThread();
// extendsThread.run();// 简单的方法调用,不是启动线程
extendsThread.start();// 用start启动该线程
for (int i = 0; i < 100; i++) {
System.out.println("main::" + i);
}
}
}
- 运行结果
注意每次运行结果可能不同,多运行几次效果更明显
main::0
main::1
main::2
main::3
main::4
main::5
main::6
methodrun::0
methodrun::1
main::7
main::8
main::9
main::10
main::11
main::12
methodrun::2
methodrun::3
methodrun::4
methodrun::5
main::13
main::14
methodrun::6
methodrun::7
methodrun::8
methodrun::9
methodrun::10
methodrun::11
methodrun::12
methodrun::13
main::15
main::16
methodrun::14
main::17
main::18
main::19
main::20
main::21
main::22
main::23
main::24
main::25
main::26
methodrun::15
methodrun::16
methodrun::17
methodrun::18
methodrun::19
methodrun::20
methodrun::21
main::27
main::28
methodrun::22
main::29
main::30
main::31
main::32
methodrun::23
methodrun::24
main::33
methodrun::25
methodrun::26
methodrun::27
methodrun::28
methodrun::29
methodrun::30
methodrun::31
methodrun::32
methodrun::33
methodrun::34
main::34
main::35
main::36
main::37
main::38
main::39
main::40
main::41
main::42
main::43
main::44
main::45
main::46
main::47
main::48
main::49
main::50
main::51
main::52
main::53
main::54
main::55
main::56
main::57
main::58
main::59
main::60
main::61
main::62
methodrun::35
methodrun::36
methodrun::37
methodrun::38
methodrun::39
methodrun::40
methodrun::41
methodrun::42
main::63
methodrun::43
main::64
methodrun::44
methodrun::45
methodrun::46
methodrun::47
methodrun::48
methodrun::49
methodrun::50
methodrun::51
methodrun::52
main::65
main::66
main::67
main::68
main::69
main::70
main::71
methodrun::53
methodrun::54
methodrun::55
main::72
methodrun::56
methodrun::57
methodrun::58
main::73
main::74
main::75
main::76
main::77
main::78
main::79
main::80
main::81
methodrun::59
methodrun::60
methodrun::61
methodrun::62
methodrun::63
methodrun::64
methodrun::65
methodrun::66
methodrun::67
methodrun::68
methodrun::69
methodrun::70
methodrun::71
methodrun::72
methodrun::73
methodrun::74
methodrun::75
methodrun::76
main::82
main::83
methodrun::77
methodrun::78
methodrun::79
methodrun::80
main::84
main::85
methodrun::81
methodrun::82
main::86
main::87
main::88
main::89
main::90
main::91
main::92
main::93
main::94
main::95
main::96
main::97
main::98
main::99
methodrun::83
methodrun::84
methodrun::85
methodrun::86
methodrun::87
methodrun::88
methodrun::89
methodrun::90
methodrun::91
methodrun::92
methodrun::93
methodrun::94
methodrun::95
methodrun::96
methodrun::97
methodrun::98
methodrun::99
方式2: implements Runnable
Thread的构造方法
-
Thread(Runnable target):利用Runable对象创建一个线程,启动时将执行该对象的run方法
-
Thread(Runnable target,String name) : 利用Runnable对象创建一个线程,并指定该线程的名称
/**
* 线程创建方式2
* 推荐使用方式2
* (1.java是单继承,多实现;避免了单继承的局限性。)
* (2.多个线程可以共享同一个接口实现类的对象,非常适合多个相同线程来处理同一份资源)
* @author ASUS
*
*/
public class ImplementsRunnable implements Runnable{
@Override
public void run() {
for(int i = 0;i < 100;i++) {
System.out.println("ImplementsRunnble::"+i);
}
}
}
- 测试类
/**
* 测试通过实现Runnable接口创建的线程类
* @author ASUS
*
*/
public class TestImplementsRunnable {
public static void main(String[] args) {
// 创建实现接口类的对象
ImplementsRunnable implementsRunnable = new ImplementsRunnable();
// 创建线程对象
Thread thread = new Thread(implementsRunnable);
// 启动线程
thread.start();
// main方法中要执行的任务
for (int i = 0; i < 100; i++) {
System.out.println("main::" + i);
}
}
}
- 运行结果
main::0
main::1
main::2
main::3
main::4
main::5
main::6
main::7
main::8
main::9
main::10
main::11
main::12
main::13
main::14
main::15
main::16
main::17
ImplementsRunnble::0
ImplementsRunnble::1
main::18
main::19
main::20
main::21
main::22
main::23
main::24
main::25
main::26
main::27
main::28
main::29
main::30
main::31
main::32
main::33
ImplementsRunnble::2
main::34
main::35
main::36
main::37
main::38
main::39
main::40
main::41
main::42
main::43
main::44
main::45
main::46
main::47
ImplementsRunnble::3
ImplementsRunnble::4
ImplementsRunnble::5
ImplementsRunnble::6
main::48
main::49
main::50
main::51
main::52
main::53
main::54
main::55
main::56
main::57
main::58
main::59
main::60
main::61
main::62
main::63
main::64
main::65
main::66
main::67
main::68
main::69
main::70
main::71
main::72
main::73
main::74
main::75
main::76
main::77
main::78
main::79
main::80
main::81
main::82
main::83
main::84
ImplementsRunnble::7
ImplementsRunnble::8
ImplementsRunnble::9
main::85
main::86
main::87
ImplementsRunnble::10
ImplementsRunnble::11
ImplementsRunnble::12
main::88
main::89
main::90
main::91
main::92
main::93
main::94
main::95
main::96
ImplementsRunnble::13
main::97
ImplementsRunnble::14
main::98
main::99
ImplementsRunnble::15
ImplementsRunnble::16
ImplementsRunnble::17
ImplementsRunnble::18
ImplementsRunnble::19
ImplementsRunnble::20
ImplementsRunnble::21
ImplementsRunnble::22
ImplementsRunnble::23
ImplementsRunnble::24
ImplementsRunnble::25
ImplementsRunnble::26
ImplementsRunnble::27
ImplementsRunnble::28
ImplementsRunnble::29
ImplementsRunnble::30
ImplementsRunnble::31
ImplementsRunnble::32
ImplementsRunnble::33
ImplementsRunnble::34
ImplementsRunnble::35
ImplementsRunnble::36
ImplementsRunnble::37
ImplementsRunnble::38
ImplementsRunnble::39
ImplementsRunnble::40
ImplementsRunnble::41
ImplementsRunnble::42
ImplementsRunnble::43
ImplementsRunnble::44
ImplementsRunnble::45
ImplementsRunnble::46
ImplementsRunnble::47
ImplementsRunnble::48
ImplementsRunnble::49
ImplementsRunnble::50
ImplementsRunnble::51
ImplementsRunnble::52
ImplementsRunnble::53
ImplementsRunnble::54
ImplementsRunnble::55
ImplementsRunnble::56
ImplementsRunnble::57
ImplementsRunnble::58
ImplementsRunnble::59
ImplementsRunnble::60
ImplementsRunnble::61
ImplementsRunnble::62
ImplementsRunnble::63
ImplementsRunnble::64
ImplementsRunnble::65
ImplementsRunnble::66
ImplementsRunnble::67
ImplementsRunnble::68
ImplementsRunnble::69
ImplementsRunnble::70
ImplementsRunnble::71
ImplementsRunnble::72
ImplementsRunnble::73
ImplementsRunnble::74
ImplementsRunnble::75
ImplementsRunnble::76
ImplementsRunnble::77
ImplementsRunnble::78
ImplementsRunnble::79
ImplementsRunnble::80
ImplementsRunnble::81
ImplementsRunnble::82
ImplementsRunnble::83
ImplementsRunnble::84
ImplementsRunnble::85
ImplementsRunnble::86
ImplementsRunnble::87
ImplementsRunnble::88
ImplementsRunnble::89
ImplementsRunnble::90
ImplementsRunnble::91
ImplementsRunnble::92
ImplementsRunnble::93
ImplementsRunnble::94
ImplementsRunnble::95
ImplementsRunnble::96
ImplementsRunnble::97
ImplementsRunnble::98
ImplementsRunnble::99
线程中的方法
线程对象中的方法
- void start() : 启动线程
- final void setName(String name) : 设置线程的名称
- final String getName() : 返回线程的名称
- final void setPriority(int newPriority) : 设置线程的优先级
- final int getPriority() : 返回线程的优先级
- final void join() : throws InterruptedException 等待线程终止
对于线程优先级用整数表示,取值范围是1~10,一般线程默认优先级都是5(优先级越高,更有机会获得CPU)
Thread类中的方法
- static Thread currentThread() : 返回对当前正在执行的线程对象的引用
- static void sleep(long millis) throws InterruptedException : 让当前正在执行的线程休眠(暂停执行),millis(毫秒)
内容总结
以上是互联网集市为您收集整理的Java基础之线程全部内容,希望文章能够帮你解决Java基础之线程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。