首页 > 编程语言 > 详细

07-多线程

时间:2019-12-16 09:13:28      阅读:76      评论:0      收藏:0      [点我收藏+]

Java使用java.lang.Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段程序流即一段顺序执行的代码。Java使用线程执行体来代表这段程序流。Java中通过继承Thread类来创建启动多线程的步骤如下:

  1. 定义Thread类的子类,并重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务,因此把run()方法称为线程执行体。
  2. 创建Thread子类的实例,即创建了线程对象
  3. 调用线程对象的start()方法来启动该线程

代码如下:

测试类:

1
2
3
4
5
6
7
8
9
10
11
12
public class  {
public static void main(String[] args) {

MyThread mt = new MyThread("新的线程!");
//开启新线程
mt.start();
//在主方法中执行for循环
for (int i = 0; i < 10; i++) {
System.out.println("main线程!"+i);
}
}
}

1.1 继承Thread:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MyThread extends Thread {
//定义指定线程名称的构造方法
public MyThread(String name) {
//调用父类的String参数的构造方法,指定线程的名称
super(name);
}
/**
* 重写run方法,完成该线程执行的逻辑
*/

public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(getName()+":正在执行!"+i);
}
}
}

2.2 实现Runnable接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
?public?class?MyRunnable?implements?Ru 大专栏  07-多线程nnable{
?
???public?void?run()?{
?????for?(int?i?=?0;?i?<?20;?i++)?{
????System.out.println(Thread.currentThread().getName()+"?"+i);?????
}??????
}???
}
public?class?Demo?{
????public?static?void?main(String[]?args)?{
????????//创建自定义类对象??线程任务对象
????????MyRunnable?mr?=?new?MyRunnable();
????????//创建线程对象
????????Thread?t?=?new?Thread(mr,?"小强");
????????t.start();
????????for?(int?i?=?0;?i?<?20;?i++)?{
????????????System.out.println("旺财?"?+?i);
????????}
????}
}

1.3 匿名内部类方式实现多线程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 public?class?NoNameInnerClassThread?{
???public?static?void?main(String[]?args)?{ ??? ? ????
// new?Runnable(){ ?????
// public?void?run(){ ?????????
// for?(int?i?=?0;?i?<?20;?i++)?{ ?????????????
// System.out.println("张宇:"+i); ?????????????????
// } ?????????????
// }?? ?????????
// ???};?//‐‐‐这个整体??相当于new?MyRunnable() ??
????????Runnable?r?=?new?Runnable(){
????????????public?void?run(){
????????????????for?(int?i?=?0;?i?<?20;?i++)?{
?????????????????? System.out.println("张宇:"+i); ?
????????????????}
????????????}?
????????};
????????new?Thread(r).start();
?for?(int?i?=?0;?i?<?20;?i++)?{
?????????? System.out.println("费玉清:"+i); ?
????????}
???}
}

二、线程通信

07-多线程

原文:https://www.cnblogs.com/lijianming180/p/12046746.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!