我是靠谱客的博主 幽默黑夜,这篇文章主要介绍两种实现多线程的方式 迅雷案列,现在分享给大家,希望可以做个参考。

Thread多线程类

继承Thread类使子类有多线程的能力
1.子类需要重写run()方法

  • 重要,run()里面是子线程的重要实现过程
    东西的案列
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package 第一种; public class Thunder extends Thread{ @Override public void run() {//继承Thread需要重写run()方法 // TODO Auto-generated method stub for(int i=1;i<101;i++) { System.out.println(Thread.currentThread().getName()+"下载进度:"+i+"%");//使用这种只能是默认的名字或者在a.star()之前设置名字 try { Thread.sleep(50);//没个子线程的休眠时间及时间片 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }

测试类
package 第一种;

public class ThunderTest {

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public static void main(String[] args) throws InterruptedException { // TODO Auto-generated method stub System.out.println("我是主线程"); Thread s=Thread.currentThread(); boolean sk=s.isDaemon();//判断主函数是否是守护程序 System.out.println(sk); Thunder a=new Thunder(); Thunder a1=new Thunder(); Thunder a2=new Thunder(); Thunder a3=new Thunder(); a.setName("复仇者联盟"); a.start(); a1.setName("复仇者联盟2"); a1.start(); a2.setName("复仇者联盟3"); a2.start(); a3.setName("复仇者联盟4"); a3.start(); } /*

复仇者联盟2下载进度:1%
.。。。。
。。
复仇者联盟4下载进度:92%
复仇者联盟下载进度:92%
复仇者联盟2下载进度:93%
复仇者联盟3下载进度:93%
复仇者联盟4下载进度:93%
复仇者联盟下载进度:93%
复仇者联盟3下载进度:94%
复仇者联盟2下载进度:94%
复仇者联盟4下载进度:94%
复仇者联盟下载进度:94%
复仇者联盟2下载进度:95%
复仇者联盟3下载进度:95%
复仇者联盟4下载进度:95%
复仇者联盟下载进度:95%
复仇者联盟3下载进度:96%
复仇者联盟2下载进度:96%
复仇者联盟4下载进度:96%
复仇者联盟下载进度:96%
复仇者联盟2下载进度:97%
复仇者联盟3下载进度:97%
复仇者联盟下载进度:97%
复仇者联盟4下载进度:97%
复仇者联盟3下载进度:98%
复仇者联盟2下载进度:98%
复仇者联盟4下载进度:98%
复仇者联盟下载进度:98%
复仇者联盟3下载进度:99%
复仇者联盟2下载进度:99%
复仇者联盟4下载进度:99%
复仇者联盟下载进度:99%
复仇者联盟4下载进度:100%
复仇者联盟2下载进度:100%
复仇者联盟3下载进度:100%
复仇者联盟下载进度:100%

*/

}

实现Runnable接口

  1. 增加程序的扩展性;在实现Runnable接口的同时;可以继承别的东西
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package 第二种; //实现是为了 public class Thunder implements Runnable {//实现接口 @Override public void run() { // TODO Auto-generated method stub for(int i=1;i<101;i++) { System.out.println(Thread.currentThread().getName()+"下载进度:"+i+"%"); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }

测试类

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package 第二种; public class RunableTest { public static void main(String[] args) { // TODO Auto-generated method stub Thunder t=new Thunder();//只是由线程的能力 //使用线程的能力包装下 Thread t1=new Thread(t,"钢铁侠");//传参 Thread t2=new Thread(t,"蜘蛛侠");//传参 Thread t3=new Thread(t,"美国堆中");//传参 Thread t4=new Thread(t,"海绵宝宝");//传参 Thread t5=new Thread(t,"神奇女侠");//传参 Thread t6=new Thread(t,"海王");//传参 //只有这个类才由start方法 启动子线程的功能 t1.start(); t2.start(); t3.start(); t4.start(); t5.start(); t6.start(); } }

练习 第二种方法好 这很灵活

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package 第二种; public class Thunder1 implements Runnable { @Override public void run() { // TODO Auto-generated method stub for(int i=1;i<101;i++) { System.out.println(Thread.currentThread().getName()+i+"%"); try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }

测试类

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package 第二种; public class Thunder1Test { public static void main(String[] args) { // TODO Auto-generated method stub Thunder1 a=new Thunder1(); Thread s1=new Thread(a,"钢铁侠"); s1.start(); Thread s2=new Thread(a,"绿巨人"); s2.start(); Thread s3=new Thread(a,"沐浴之王"); s3.start(); } }
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package 第二种1; public class Thunder implements Runnable { @Override public void run() { // TODO Auto-generated method stub for(int i=1;i<101;i++) { System.out.println(Thread.currentThread().getName()+i+"%"); try { Thread.sleep(5000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package 第二种1; public class ThunDerTest { public static void main(String[] args) { // TODO Auto-generated method stub Thunder a=new Thunder(); Thread s1=new Thread(a,"哥谭市"); Thread s2=new Thread(a,"经历"); Thread s3=new Thread(a,"金刚狼"); Thread s4=new Thread(a,"我是你爸"); s1.start(); s2.start(); s3.start(); s4.start(); } }

最后

以上就是幽默黑夜最近收集整理的关于两种实现多线程的方式 迅雷案列的全部内容,更多相关两种实现多线程的方式内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(101)

评论列表共有 0 条评论

立即
投稿
返回
顶部