zoukankan      html  css  js  c++  java
  • 线程中join方法和Sleep方法的举例

    Sleep

    package Thread01;
    
    //sleep():  睡眠    让调用者进入阻塞状态
    public class Sleep implements Runnable{
    
        static Thread t = null;
        public static void main(String[] args) {
            
            Sleep s = new Sleep();
             t = new Thread(s,"银河一号");
            System.out.println(t.getName()+"处于创建状态");
            t.start();
            
            
        }
        @Override
        public void run() {
            // TODO Auto-generated method stub
            
            
            System.out.println("银河一号开始跑步!");
            
            try {
                System.out.println("银河一号进入休眠,处于阻塞状态");
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        
            System.out.println(t.getName()+"处于就绪状态!");
        }
    
        
        
        
        
        
        
    }

    package Thread01;
    
    //join();   参加      让调用进入就绪状态,让当前线程进入阻塞状态
    public class join {
    
        static boolean boo = false;
        public static void main(String[] args) {
    
            Thread t1 = new Thread("线程1下载图片:") {
    
                public void run() {
                    System.out.println("download:开始下载图片!");
    
                    for (int i = 0; i <= 100; i++) {
    
                        System.out.println(Thread.currentThread().getName() + "正在下载:" + i + "%");
                    }
    
                    //下载完成
                    boo = true;
                }
    
            };
            Thread t2 = new Thread() {
            
        
                public void run() {
                    
                    
                    try {
                        //要先下载再显示
                        t1.join();
                        System.out.println("show:显示图片");
                        
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                        System.out.println("程序中止");
                    }
                    //没有下载完成  抛出没有下载完成就不能显示的异常
                    if(!boo) {
                        
                        //异常Exception 分为检查异常(Checked Exception)和非检查异常(Runtime Exception)
                        throw new RuntimeException("还未下载完成不能显示!");
                        
                        
                    }
                    System.out.println("显示结束!");
                    
                    
                    
                }
            
            
            
            };
            
    //开启两个线程 t1.start(); t2.start(); } }

  • 相关阅读:
    GRIDVIEW导出到EXCEL
    .NET GRIDVIEW导出EXCEL
    C#自动列宽
    vue 路由跳转及传值和取值
    vue 部署windows nginx服务上
    vue多个代理配置vue.config
    mock常用规则
    git基础篇-常见错误
    git基础篇-使用教程
    win10 gitserver搭建
  • 原文地址:https://www.cnblogs.com/bichen-01/p/11304821.html
Copyright © 2011-2022 走看看