首页 > 编程语言 > 详细

多线程(一)基础

时间:2021-07-26 14:52:17      阅读:24      评论:0      收藏:0      [点我收藏+]

1.什么是多线程

正常我们执行任务时,任务都是从上到下有序执行,而多线程,就是让多个任务同时执行。

2.创建线程方式一——Thread类

2.1Thread类的构造方法和常用方法

技术分享图片

2.2如何使用

1.因为无法直接创建Thread对象,所以我们先创建一个类,继承Thread,重写其中的run方法。

1 public class MyThread extends Thread {
2     @Override
3     public void run() {
4         // TODO Auto-generated method stub
5         for (int i = 0; i < 100; i++) {
6             System.out.println(getName()+":"+i);
7         }
8     }
9 }

2.再创建测试类,创建该类对象,执行对象,注意要使用Thread中的start()方法开启,否则就只是调用run()这个方法。

 1 public class demo02 {
 2     public static void main(String[] args) {
 3         //创建线程对象
 4         MyThread my = new MyThread();
 5         //开启线程
 6         my.start();
 7         //描述主线程任务
 8         for (int i = 1; i < 100; i++) {
 9             System.out.println(Thread.currentThread().getName()+":"+i);
10         }
11     }
12 }

Thread类中,包含几个方法,第一个是getName(),用来获取该线程的线程名,还有一个方法,是返回当前正在执行的线程对象的引用的currentThread()方法,后面这个就是用来在主方法中使用。

技术分享图片

 

 

 

3.执行结果:

技术分享图片

 

我们看到两个任务在同时进行,且你的CPU越好,这种频繁切换的数量就会更多。

3.创建线程方式二——Runnable接口

3.1Thread类中与Runnable有关的构造方法

 

 技术分享图片

 

 

 3.2Runnable接口的使用方法

1.也是先创建实现Runnable接口的类

1 public class MyRunnable implements Runnable {
2     @Override
3     public void run() {
4         // TODO Auto-generated method stub
5         for (int i = 1; i < 101; i++) {
6             System.out.println(Thread.currentThread().getName()+":"+i);
7         }
8     }
9 }

2.再创建测试类,创建其线程任务对象,创建线程,执行任务。

 1 public class demo01 {
 2     public static void main(String[] args) {
 3         //创建线程任务对象
 4         MyRunnable mr = new MyRunnable();
 5         //创建线程
 6         Thread th = new Thread(mr);
 7         th.start();
 8         for (int i = 1; i < 101; i++) {
 9             System.out.println(Thread.currentThread().getName()+":"+i);
10         }
11     }
12 }

3.执行结果

技术分享图片

 

也是两个线程同时执行,那区别在什么地方?

区别在于,直接继承Thread类时,因为规定一个类只能继承一个类,所以直接断掉了继承其他类的办法,而使用实现Runnable接口的方法,因一个类可以实现多个接口,所以不影响类其本身的其他操作。

4.匿名内部类

我们在如果只重写一个方法,就可以使用匿名内部类的办法。

 

 

 1 public static void main(String[] args) {
 2         //1.继承Thread类
 3         //创建Thread类的子类对象
 4         Thread t = new Thread(){
 5             public void run() {
 6                 for (int i = 1; i < 101; i++) {
 7                     System.out.println(getName()+":"+i);
 8                 }
 9             }
10         };
11         //开启线程
12         t.start();
13         //2.实现Runnable接口
14         //创建线程任务对象
15         Runnable r = new Runnable(){
16             public void run() {
17                 for (int i = 1; i < 101; i++) {
18                     System.out.println(Thread.currentThread().getName()+":"+i);
19                 }
20             }
21         };
22         //创建线程对象
23         Thread t1 = new Thread(r);
24         t1.start();
25     }

 

多线程(一)基础

原文:https://www.cnblogs.com/shenhx666/p/15060826.html

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