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随机性决定的;

控制多线程执行顺序
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();
} }
执行结果:
现在CPU执行 Thread-0 Thread-1 的顺序:

Android-Java控制多线程执行顺序的更多相关文章
- Java控制多线程执行顺序
package net.jasonjiang.thread; import java.io.IOException; public class ThreadTestNew { public stati ...
- pthread_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(Java)控制GPIO的方法及耗时分析
前面两篇分别介绍了通过脚本和C代码读写/sys/class/gpio以控制GPIO.实际项目调试时经常还需要在Java代码里控制GPIO,其实现与C代码类似,唯一不同是Android权限.本文重点介绍 ...
- Java获取多线程执行结果方式的归纳与总结
在日常的项目开发中,我们会经常遇到通过多线程执行程序并需要返回执行结果的场景,下面我们就对获取多线程返回结果的几种方式进行一下归纳,并进行简要的分析与总结. 一.Thread.join 在一些简单的应 ...
- Java类的执行顺序
在Java中一个类包括:构造块.构造方法.静态块.main方法.普通方法. 通过下面的例子将看出一个类中各种方法的执行顺序: /** * @author zhengbinMac */ public c ...
- 通过指令码来判断Java代码的执行顺序(++问题与return和finally的问题)
问题 在<深入理解Java虚拟机>一书中遇到了如下代码: public int method() { int i; try { i = 1; return i; } catch (Exce ...
- Java的初始化执行顺序(父类static变量->子类static变量->父类成员变量->父类构造器->成员变量->构造器->main函数)
1. 引言 了解Java初始化的顺序,有助于理解Java的初始化机制和内存机制. 顺序:父类static变量->子类static变量->父类成员变量->父类构造器->成员变量- ...
随机推荐
- Luogu 1341 无序字母对 - 欧拉路径
Solution 找一条字典序最小的欧拉路径. 用 $multiset$ 存储领接表. 欧拉路径模板传送门 Code #include<cstdio> #include<cstrin ...
- PHP 5.6 开启CURL HTTPS 类型
前几日要写微信支付接口,微信支付接口CURL地址是HTTPS.本机测试的是OK的,但是服务器缺提示错误--“ Protocol https not supported or disabled in l ...
- autohotkey快捷键
;已经基本修复了输入带shift的时候跟输入法中英文切换之间的冲突 SetStoreCapslockMode, off SetKeyDelay, ^CapsLock:: #UseHook ;用这个和下 ...
- m序列
产生m序列移位寄存器是一种逻辑电路,1阶,2阶...的电路图各不相同. 一般使用本原多项式计算出各阶数电路图. 一般的多项式为 f(x) = c0 * x^0 + c1 * x^1 + c2 * x^ ...
- UD系统主定制界面
- 人类及其他物种基因组DNA之问
问题1 : 不同人类个体的基因组长度总长是不是一样,如果不一样,那么人类基因组长度排序和范围区间是如何控制的?最短是多少,最长是多少?如果一样,如何理解基因的插入与缺失,INDEL等现象,如何平衡的呢 ...
- windows 2003端口80system进程占用的情况
1.首先是http服务 a. 位置 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTPb. 把 REG_DWORD 类型的项 Start ...
- 2017/2/6:在oracle中varchar与varchar2的区别与增删改查
1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节:2.VARCHAR2把空串等同于null处理,而varchar仍按 ...
- Hexo之部署github
最近开始学NodeJs,准备也在github上弄个一个Hexo博客练练过程中遇到一些问题总结一下.希望对遇到同样问题的同学能有个帮助少走一些弯路. - 其实用windows或mac客户端直接去同步很顺 ...
- 【转】 vxWorks下常用的几种延时方法
在应用编程的时候,通常会碰到需要一个任务在特定的延时之后执行一个指定的动作,如等待外设以确保数据可靠,控制扬声器发声时间以及串口通信超时重发等.这就需要利用定时器机制来计量特定长度的时间段. vxWo ...
