线程常用的两种创建方法
来源:互联网 发布:java snmp 流量监控 编辑:程序博客网 时间:2024/06/03 20:18
1、继承Thread,重写该类的run()方法。class MyThread extends Thread { private int i = 0; @Override public void run() { for (i = 0; i < 100; i++) { System.out.println(Thread.currentThread().getName() + " " + i); } }}public class ThreadTest { public static void main(String[] args) { for (int i = 0; i < 100; i++) { System.out.println(Thread.currentThread().getName() + " " + i); if (i == 30) { Thread myThread1 = new MyThread(); // 创建一个新的线程 myThread1 此线程进入新建状态 Thread myThread2 = new MyThread(); // 创建一个新的线程 myThread2 此线程进入新建状态 myThread1.start(); // 调用start()方法使得线程进入就绪状态 myThread2.start(); // 调用start()方法使得线程进入就绪状态 } } }}如上所示,继承Thread类,通过重写run()方法定义了一个新的线程类MyThread,其中run()方法的方法体代表了线程需要完成的任务,称之为线程执行体。当创建此线程类对象时一个新的线程得以创建,并进入到线程新建状态。通过调用线程对象引用的start()方法,使得该线程进入到就绪状态,此时此线程并不一定会马上得以执行,这取决于CPU调度时机。
2、实现Runnable接口,并重写该接口的run()方法,该run()方法同样是线程执行体,创建Runnable实现类的实例,并以此实例作为Thread类的target来创建Thread对象,该Thread对象才是真正的线程对象。
class MyRunnable implements Runnable { private int i = 0; @Override public void run() { for (i = 0; i < 100; i++) { System.out.println(Thread.currentThread().getName() + " " + i); } }}class MyRunnable implements Runnable { private int i = 0; @Override public void run() { for (i = 0; i < 100; i++) { System.out.println(Thread.currentThread().getName() + " " + i); } }}
阅读全文
0 0
- 创建线程的两种常用方法
- 线程常用的两种创建方法
- Java创建线程的常用的两种方法
- Java创建线程的两种方法
- Java创建线程的两种方法
- Java创建线程的两种方法
- java线程的两种创建方法
- Java创建线程的两种方法
- java 创建线程的两种方法
- java---------创建线程的两种方法
- Java创建线程的两种方法
- Java线程创建的两种方法
- 线程创建的两种方法
- Java创建线程的两种方法
- Java 创建线程的两种方法
- Java 创建线程的两种方法
- Python线程的两种创建方法
- Java创建线程的两种方法
- HDU 5172 GTY's gay friends 线段树(排列,区间不同的数)
- IOS监听通话状态(私有API)
- Hive Multi Insert 引起的GC overhead limit exceeded
- unity3d代码设置环境光
- 删除过时的hls缓存
- 线程常用的两种创建方法
- Windows10 下 Eclipse+MonkeyRunner开发环境搭建
- SpringBoot(4) 统一异常处理
- c语言复习(三)
- C#中 openfiledialog 和 FolderBrowserDialog 的使用 2
- 通过web_custom_request编写接口压测脚本
- Spark RDD 分区数详解
- [ReactNative]Image点击事件[this.props.pop()]无法返回上一页
- Python3 random(伪随机数 模块)