博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 创建线程
阅读量:6539 次
发布时间:2019-06-24

本文共 2069 字,大约阅读时间需要 6 分钟。

一.继承Thread类

为创建一个线程,最简单的方法就是从Thread类继承。这个类包含了创建和运行线程所需的一切东西。Thread类最重要的方法是run(),但为了使用run(),必须对其进行重写。因此,run()属于那些会与程序中的其他线程“并发”或“同时”执行的代码。下面的例子是继承Thread类的一个简单实现。

java程序如下:

public class SimpleThread extends Thread {	private int countDown = 5;	private int threadNumber;	private static int threadCount = 0;	/**	 * 为每个线程分配一个编号	 */	public SimpleThread() {		threadNumber = ++threadCount;		System.out.println("Making Thread" + threadNumber);	}	/**	 * 从5到1进行计数	 */	@Override	public void run() {		while (true) {			System.out.println("Thread" + threadNumber + ":" + countDown);			if (--countDown == 0) {				return;			}		}	}	public static void main(String[] args) {		for (int i = 0; i < 5; i++) {			new SimpleThread().start();		}	}}

执行结果如下:

Making Thread1

Making Thread2
Making Thread3
Making Thread4
Making Thread5
Thread3:5
Thread3:4
Thread3:3
Thread3:2
Thread1:5
Thread3:1
Thread1:4
Thread1:3
Thread1:2
Thread1:1
Thread4:5
Thread4:4
Thread4:3
Thread4:2
Thread5:5
Thread5:4
Thread5:3
Thread5:2
Thread5:1
Thread2:5
Thread2:4
Thread2:3
Thread2:2
Thread2:1
Thread4:1

在main()方法中,可看到创建并运行了大量线程。Thread包含了一个特殊的方法叫做start(),它的作用是对线程进行特殊的初始化,然后调用run()。如果不调用start(),线程便永远不会启动。

二.实现Runnable接口

在实际开发中,一个多线程的操作很少使用Thread类,而是通过Runnable接口完成。示例如下:

java代码如下:

public class SimpleThread implements Runnable {	private int countDown = 10;		/**	 * 从10到1进行计数	 */	@Override	public void run() {		while (true) {			synchronized(this) {				if (countDown > 0) {					System.out.println(Thread.currentThread().getName() + ":" + countDown--);				} else {					return;				}								try {					Thread.sleep(100);				} catch (InterruptedException e) {					e.printStackTrace();				}			}		}	}	public static void main(String[] args) {		SimpleThread sd = new SimpleThread();		for (int i = 0; i < 3; i++) {			new Thread(sd).start();		}	}}

执行结果如下:

Thread-0:10

Thread-2:9
Thread-2:8
Thread-1:7
Thread-2:6
Thread-2:5
Thread-2:4
Thread-2:3
Thread-2:2
Thread-2:1

两种实现方式的区别和联系

在程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下好处:

  • 避免点继承的局限,一个类可以继承多个接口。
  • 适合于资源的共享

转载于:https://www.cnblogs.com/minisculestep/p/4983083.html

你可能感兴趣的文章
eclipse 设置注释模板详解,与导入模板方法介绍总结
查看>>
Cocos2d-x3.2 文字显示
查看>>
mongodb group
查看>>
session_start()放置位置的不正确引发的ROOT常量 未定义的错误
查看>>
如何设定VDP同时备份的任务数?
查看>>
ipsec的***在企业网中的经典应用
查看>>
过来人谈《去360还是留在百度?》
查看>>
mysql备份工具innobackupex,xtrabackup-2.1安装,参数详解
查看>>
本地Office Project计划表同步到SharePoint2013任务列表的权限问题
查看>>
Windows2008 R2 GAC权限问题
查看>>
洛谷——P1469 找筷子
查看>>
springboot项目自定义注解实现的多数据源切换
查看>>
特此说明
查看>>
使用flume替代原有的scribe服务
查看>>
Hyper-V 2016 系列教程41 Windows 10 Hyper-V 系统要求
查看>>
Windows Server 2008 启用公共文件夹共享
查看>>
Apple Watch的非“智能手表”卖点
查看>>
函数指针和指针函数
查看>>
Python的函数参数传递:传值?引用?
查看>>
[转]分享2011年8个最新的jQuery Mobile在线教程
查看>>