Android多线程先后顺序,Android-Java控制多线程执行顺序

功能需求:

Thread-0线程:打印 1 2 3 4 5 6

Thread-1线程:打印1 1 2 3 4 5 6

先看一个为实现(功能需求的案例)

package android.java;

// 定义打印任务(此对象只是打印任务,不是线程)

class PrintRunnable implements Runnable {

@Override

public void run() {

for (int i = 1; i <= 6; i++) {

System.out.println(Thread.currentThread().getName() + ":" + i);

}

}

}

public class TestControlThread {

public static void main(String[] args) {

// 实例化 打印任务Runnable

Runnable printRunnable = new PrintRunnable();

// 创建第一个线程

Thread thread1 = new Thread(printRunnable); // 把打印任务Runnable 给 线程执行

// 创建第二个线程

Thread thread2 = new Thread(printRunnable); // 把打印任务Runnable 给 线程执行

// 启动第一个线程

thread1.start();

// 启动第二个线程

thread2.start();

}

}

执行结果:打印的结果每次都可能会不一样,是由CPU随机性决定的;

118cd1fbb57bd7da26dd8ab2a783e99f.gif

控制多线程执行顺序

package android.java;

// 定义打印任务(此对象只是打印任务,不是线程)

class PrintRunnable implements Runnable {

@Override

public void run() {

for (int i = 1; i <= 6; i++) {

System.out.println(Thread.currentThread().getName() + ":" + i);

}

}

}

public class TestControlThread {

public static void main(String[] args) throws InterruptedException { // 注意⚠️:main不是重写的方法,所以可以往外抛

// 实例化 打印任务Runnable

Runnable printRunnable = new PrintRunnable();

// 创建第一个线程

Thread thread1 = new Thread(printRunnable); // 把打印任务Runnable 给 线程执行

// 创建第二个线程

Thread thread2 = new Thread(printRunnable); // 把打印任务Runnable 给 线程执行

// 启动第一个线程

thread1.start();

/**

* 取消主线程CPU执行资格/CPU执行权,60毫秒

* 60毫秒后主线程恢复CPU执行资格/CPU执行权 --->>> 在去启动第二个线程时:第一个线程已经执行完毕了,这样就控制线程的顺序了

*/

Thread.sleep(60);

// 启动第二个线程

thread2.start();

}

}

执行结果:

6f7017c8a629fe50776f7d58efaa7fd2.gif

现在CPU执行 Thread-0  Thread-1  的顺序:

7757e0c9e978f783d23715cfdb2cbc2c.png

Java控制多线程执行顺序

package net.jasonjiang.thread; import java.io.IOException; public class ThreadTestNew { public stati ...

pthread&lowbar;create多线程执行顺序诡异现象

多线程执行顺序诡异现象谈,你不知道的pthread_create 引文:学而时习之,不亦说乎.总是忙于具体项目,业务功能的实现:关于编程本身的技能都要有些生疏了,于是就选择了几个专题做了一次温习,重点 ...

java代码块执行顺序

父类 public class Father { public Father() { System.out.println("父类构造PUBLIC father"); } stat ...

【Java多线程系列四】控制线程执行顺序

假设有线程1/线程2/线程3,线程3必须在线程1/线程2执行完成之后开始执行,有两种方式可实现 Thread类的join方法:使宿主线程阻塞指定时间或者直到寄生线程执行完毕 CountDownLatc ...

Android&lpar;Java&rpar;控制GPIO的方法及耗时分析

前面两篇分别介绍了通过脚本和C代码读写/sys/class/gpio以控制GPIO.实际项目调试时经常还需要在Java代码里控制GPIO,其实现与C代码类似,唯一不同是Android权限.本文重点介绍 ...

Java获取多线程执行结果方式的归纳与总结

在日常的项目开发中,我们会经常遇到通过多线程执行程序并需要返回执行结果的场景,下面我们就对获取多线程返回结果的几种方式进行一下归纳,并进行简要的分析与总结. 一.Thread.join 在一些简单的应 ...

Java类的执行顺序

在Java中一个类包括:构造块.构造方法.静态块.main方法.普通方法. 通过下面的例子将看出一个类中各种方法的执行顺序: /** * @author zhengbinMac */ public c ...

通过指令码来判断Java代码的执行顺序(&plus;&plus;问题与return和finally的问题)

问题 在一书中遇到了如下代码: public int method() { int i; try { i = 1; return i; } catch (Exce ...

随机推荐

各版本CRM所需端口号

以下是微软官方提供的CRM端口号列表,收藏一下: 4.0 :https://msdn.microsoft.com/en-us/library/dd979226(v=crm.6).aspx This s ...

按每k个结点反转链表

//按每k个结点反转链表 Node* turn_k(Node* head,int n,int k) { Node* p=head; ;tnext; //为了获取最 ...

JavaScript Dispatch Event

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值