有没有yield()、sleep()、wait()、join()、run和start区别代码实例代码案例 找不到 可以运行的 不要 文档
1条回答 默认 最新
- 来时路去征途 2017-10-11 18:11关注
这是我做练习的时候写的代码,你可以参考下,
/**
*run(),start(),join(),sleep(),yield();练习
*/
public class ThreadTest {
private int i=0;
private Object o = new Object();
static class Mythread extends Thread{
public void run() {
System.out.println("0当前线程ID:"+Thread.currentThread().getId());
}
}static class Mythread1 implements Runnable{ public void run() { System.out.println("1当前线程ID:"+Thread.currentThread().getId()); } } public static void main(String[] args) throws InterruptedException { /*System.out.println("主线程:"+Thread.currentThread().getId()); Mythread mythread = new Mythread(); mythread.run(); mythread.start(); System.out.println("******************************************************"); System.out.println("主线程:"+Thread.currentThread().getId()); Mythread1 mythread1 = new Mythread1(); mythread1.run(); Thread thread = new Thread(mythread1); thread.start();*/ //mythread1.start(); ThreadTest test = new ThreadTest(); /*SleepClass p =test.new SleepClass(); SleepClass p1 = test.new SleepClass(); p.start(); p1.start();*/ /*YeildClass y = test.new YeildClass(); y.start();*/ //启动子线程 new JoinClass("new Thread").start(); for(int i=0;i<10;i++){ if(i==5){ Thread th = new JoinClass("thead"); th.start(); th.join(); } System.out.println(Thread.currentThread().getName()+" "+i); } } class SleepClass extends Thread{ @Override public void run() { synchronized (o){ i++; System.out.println("i:"+i); try { System.out.println("线程:"+ Thread.currentThread().getName()+"进入睡眠"); Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("线程"+Thread.currentThread().getName()+"睡眠结束"); i++; System.out.println("i:"+i); } } } class YeildClass extends Thread{ public void run() { long benginTime = System.currentTimeMillis(); int count = 0; for(int i=0;i<500000;i++){ count = count +i; Thread.yield(); } long endTime = System.currentTimeMillis(); System.out.println("用时:"+(endTime-benginTime)); } } static class JoinClass extends Thread{ public JoinClass(String name){ super(name); } public void run() { for (int i =0;i<5;i++){ System.out.println(this.getName()+" "+i); } } }
}
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 全志t113i启动qt应用程序提示internal error
- ¥15 ensp可以看看嘛.
- ¥80 51单片机C语言代码解决单片机为AT89C52是清翔单片机
- ¥60 优博讯DT50高通安卓11系统刷完机自动进去fastboot模式
- ¥15 minist数字识别
- ¥15 在安装gym库的pygame时遇到问题,不知道如何解决
- ¥20 uniapp中的webview 使用的是本地的vue页面,在模拟器上显示无法打开
- ¥15 网上下载的3DMAX模型,不显示贴图怎么办
- ¥15 关于#stm32#的问题:寻找一块开发版,作为智能化割草机的控制模块和树莓派主板相连,要求:最低可控制 3 个电机(两个驱动电机,1 个割草电机),其次可以与树莓派主板相连电机照片如下:
- ¥15 潜在扩散模型的Unet特征提取