JAVA多线程机制之线程创建
来源:互联网 发布:windows优化大师8.0 编辑:程序博客网 时间:2024/06/07 00:10
在Java中创建线程有两种方式,一种是继承Thread,另一种是实现Runnable接口,Thread实际上也实现了Runnable接口。
Thread
构造方法
方法摘要
使用示例
public class ThreadDemo{ public static void main(String[] args) { PrintThread thread1 = new PrintThread(); PrintThread thread2 = new PrintThread(); // 通过start方法启动线程 thread1.start(); thread2.start(); }}/** * 继承Thread * * @author jianggujin * */class PrintThread extends Thread{ /** * 重写run方法,线程执行的逻辑写在该方法内 */ @Override public void run() { for (int i = 0; i < 10; i++) { try { // 使线程休眠100毫秒,使结果更直观 Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(getName() + ":" + i); } }}
运行结果如下:
Thread-1:0
Thread-0:0
Thread-0:1
Thread-1:1
Thread-0:2
Thread-1:2
Thread-0:3
Thread-1:3
Thread-0:4
Thread-1:4
Thread-1:5
Thread-0:5
Thread-1:6
Thread-0:6
Thread-0:7
Thread-1:7
Thread-0:8
Thread-1:8
Thread-1:9
Thread-0:9
在上面的示例中,我们使用了继承Thread的方式创建了线程对象并通过start()方法启动了线程,在例子中,我们启动了两个线程,线程只是简单的输出一句话,通过查看运行结果,我们可以发现两个线程是交错执行的。
Runnable
方法摘要
使用示例
public class ThreadDemo{ public static void main(String[] args) { PrintThread thread1 = new PrintThread("Thread-0"); PrintThread thread2 = new PrintThread("Thread-1"); // 使用该种方式启动线程 new Thread(thread1).start(); new Thread(thread2).start(); }}/** * 实现Runnable接口 * * @author jianggujin * */class PrintThread implements Runnable{ // 用于标识线程 private String name; public PrintThread(String name) { this.name = name; } /** * 实现run方法,线程执行的逻辑写在该方法内 */ @Override public void run() { for (int i = 0; i < 10; i++) { try { // 使线程休眠100毫秒,使结果更直观 Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(getName() + ":" + i); } } public String getName() { return name; }}
运行结果:
Thread-0:0
Thread-1:0
Thread-1:1
Thread-0:1
Thread-0:2
Thread-1:2
Thread-0:3
Thread-1:3
Thread-0:4
Thread-1:4
Thread-1:5
Thread-0:5
Thread-0:6
Thread-1:6
Thread-0:7
Thread-1:7
Thread-0:8
Thread-1:8
Thread-1:9
Thread-0:9
join()
有的时候,我们希望当一个线程执行完后,在继续执行其他线程,比如一些初始化工作。这个时候我们可以使用join()
方法,join()方法可以等待该线程终止。
使用示例
public class ThreadDemo{ public static void main(String[] args) { PrintThread thread1 = new PrintThread(); PrintThread thread2 = new PrintThread(); // 通过start方法启动线程 thread1.start(); try { //等待线程执行结束 thread1.join(); } catch (InterruptedException e) { e.printStackTrace(); } thread2.start(); }}/** * 继承Thread * * @author jianggujin * */class PrintThread extends Thread{ /** * 重写run方法,线程执行的逻辑写在该方法内 */ @Override public void run() { for (int i = 0; i < 10; i++) { try { // 使线程休眠100毫秒,使结果更直观 Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(getName() + ":" + i); } }}
运行结果:
Thread-0:0
Thread-0:1
Thread-0:2
Thread-0:3
Thread-0:4
Thread-0:5
Thread-0:6
Thread-0:7
Thread-0:8
Thread-0:9
Thread-1:0
Thread-1:1
Thread-1:2
Thread-1:3
Thread-1:4
Thread-1:5
Thread-1:6
Thread-1:7
Thread-1:8
Thread-1:9
通过运行结果我们可以看到,当我们使用join方法后,会等待线程执行结束再继续执行另一个线程。
- JAVA多线程机制之线程创建
- 第二十五篇:JAVA多线程机制之线程创建
- Java多线程之创建线程
- JAVA多线程机制之线程概念
- Java基础多线程之线程创建
- 浅谈java多线程之创建线程方式
- Java多线程之线程的创建
- Java多线程之线程的创建
- java多线程之--线程池的创建
- Java多线程之线程创建和启动
- Java多线程之创建任务和线程
- java 多线程学习之创建线程
- java多线程之创建和启动线程
- java多线程之-线程创建方式
- 多线程之线程创建
- Java - 多线程 - 创建线程
- java多线程学习之创建线程与线程间通信
- java多线程之线程间通信:等待/通知机制
- Maven搭建SpringMVC+Mybatis项目
- VR之头盔镜片畸变补偿
- 遗留问题
- 第四章 使用DML语句更改数据
- Chrome调试js出现Uncaught SyntaxError: Unexpected identifier
- JAVA多线程机制之线程创建
- ubuntu安装JDK
- 正则表达式--常用用法及lookahead、lookbehind
- iOS中的round/ceil/floorf函数略解
- equals函数
- Tomcat下配置数据库连接池
- iOS---限制UITextView中的字数
- 数据库之存储过程
- iOS网络编程