• 多线程操作的方法(sleep,)setPriority(Thread.MIN_PRIORITY);yield();


    在多线程中所有的操作方法都是从Thread类开始的,所有的操作基本都在Thread类中。

    第一取得线程名字

    a,在Thread类中,可以通过getName()方法,获得线程的名字,可以通过setName()方法设置线程的名字

    b,线程名字一般在线程启动前设置,但是也允许为已经运行的线程设置名称,允许2个Thread对象有相
    同的名字,但是不推荐,你懂的!!!

    c,如果程序没有为线程指定名字,则系统自动为线程分配一个名称。

        package xianchengcaozuo;  
          
        public class ThreadName {  
         public static void main(String[] args) {  
             Demo d1= new Demo();  
             Thread t1= new Thread(d1);  
             Thread t2= new Thread(d1,"线程A");  
             Thread t3= new Thread(d1,"线程B");  
             Thread t4= new Thread(d1);  
             t1.start();  
             t2.start();  
             t3.start();  
             t4.start();  
        }  
        }  
        class Demo implements Runnable{  
          
            @Override  
            public void run() {  
                // TODO Auto-generated method stub  
                for(int i=0;i<5;i++){  
                    System.out.println(Thread.currentThread().getName()+"运行,i="+i);  
                }  
                  
            }  
              
              
              
        }  
    Thread-0运行,i=0  
    Thread-0运行,i=1  
    Thread-0运行,i=2  
    线程A运行,i=0  
    线程A运行,i=1  
    线程A运行,i=2  
    Thread-0运行,i=3  
    Thread-0运行,i=4  
    线程A运行,i=3  
    线程A运行,i=4  
    线程B运行,i=0  
    线程B运行,i=1  
    线程B运行,i=2  
    线程B运行,i=3  
    线程B运行,i=4  
    Thread-1运行,i=0  
    Thread-1运行,i=1  
    Thread-1运行,i=2  
    Thread-1运行,i=3  
    Thread-1运行,i=4 

    没指定名字,则按编号!!

    第二 获取当前线程对象currentThread()

    第三判断线程是否启动成功 isAlive()

    第四 强制运行线程

        package xianchengcaozuo;  
        /* 
         * 强制运行线程用join方法,期间其它线程无法运行,必须等待此线程 
         * 执行完后,其它线程才可以执行 
         */  
        public class Qiangzhi {  
            public static void main(String[] args) {  
                Demo1 d1= new Demo1();  
                Thread t1= new Thread(d1,"线程A");  
                t1.start();  
                for(int i=0;i<50;i++){  
                    if(i>10){  
                        try {  
                            t1.join();  
                        } catch (InterruptedException e) {  
                            // TODO Auto-generated catch block  
                            e.printStackTrace();  
                        }  
                    }  
                    System.out.println("main线程运行:"+i);  
                }  
                  
            }  
        }  
        class Demo1 implements Runnable{  
          
            @Override  
            public void run() {  
                // TODO Auto-generated method stub  
                for(int i=0;i<50;i++){  
                    System.out.println(Thread.currentThread().getName()+"运行,i="+i);  
                }  
                  
            }  
              
              
              
        }  

    结果:

    main线程运行:0  
    main线程运行:1  
    main线程运行:2  
    main线程运行:3  
    main线程运行:4  
    main线程运行:5  
    main线程运行:6  
    main线程运行:7  
    main线程运行:8  
    main线程运行:9  
    main线程运行:10  
    线程A运行,i=0  
    线程A运行,i=1  
    线程A运行,i=2  
    线程A运行,i=3  
    线程A运行,i=4  
    线程A运行,i=5  
    线程A运行,i=6  
    线程A运行,i=7  
    线程A运行,i=8  
    线程A运行,i=9  
    线程A运行,i=10  
    线程A运行,i=11  
    线程A运行,i=12  
    线程A运行,i=13  
    线程A运行,i=14  
    线程A运行,i=15  
    线程A运行,i=16  
    线程A运行,i=17  
    线程A运行,i=18  
    线程A运行,i=19  
    线程A运行,i=20  
    线程A运行,i=21  
    线程A运行,i=22  
    线程A运行,i=23  
    线程A运行,i=24  
    线程A运行,i=25  
    线程A运行,i=26  
    线程A运行,i=27  
    线程A运行,i=28  
    线程A运行,i=29  
    线程A运行,i=30  
    线程A运行,i=31  
    线程A运行,i=32  
    线程A运行,i=33  
    线程A运行,i=34  
    线程A运行,i=35  
    线程A运行,i=36  
    线程A运行,i=37  
    线程A运行,i=38  
    线程A运行,i=39  
    线程A运行,i=40  
    线程A运行,i=41  
    线程A运行,i=42  
    线程A运行,i=43  
    线程A运行,i=44  
    线程A运行,i=45  
    线程A运行,i=46  
    线程A运行,i=47  
    线程A运行,i=48  
    线程A运行,i=49  
    main线程运行:11  
    main线程运行:12  
    main线程运行:13  
    main线程运行:14  
    main线程运行:15  
    main线程运行:16  
    main线程运行:17  
    main线程运行:18  
    main线程运行:19  
    main线程运行:20  
    main线程运行:21  
    main线程运行:22  
    main线程运行:23  
    main线程运行:24  
    main线程运行:25  
    main线程运行:26  
    main线程运行:27  
    main线程运行:28  
    main线程运行:29  
    main线程运行:30  
    main线程运行:31  
    main线程运行:32  
    main线程运行:33  
    main线程运行:34  
    main线程运行:35  
    main线程运行:36  
    main线程运行:37  
    main线程运行:38  
    main线程运行:39  
    main线程运行:40  
    main线程运行:41  
    main线程运行:42  
    main线程运行:43  
    main线程运行:44  
    main线程运行:45  
    main线程运行:46  
    main线程运行:47  
    main线程运行:48  
    main线程运行:49 

    第五 线程的休眠

        package xianchengcaozuo;  
          
        import java.util.Date;  
          
        /* 
         * 通过sleep方法,可以使线程暂停执行 
         *  
         */  
        public class ThreadSleep {  
            public static void main(String[] args) {  
                Demo2 d1= new Demo2();  
                Thread t1= new Thread(d1,"线程C");  
                t1.start();  
                }  
            }  
          
        class Demo2 implements Runnable{  
          
            @Override  
            public void run() {  
              
                for(int i=0;i<10;i++){  
                    try {  
                        //此处是毫秒  
                        Thread.sleep(5000);  
                    } catch (InterruptedException e) {  
                        // TODO Auto-generated catch block  
                        e.printStackTrace();  
                    }     
                    System.out.println(new Date());  
                        System.out.println(Thread.currentThread().getName()+"运行,i="+i);  
                }  
            }  
              
              
              
        }  
        Tue Apr 22 11:10:40 CST 2014  
        线程C运行,i=0  
        Tue Apr 22 11:10:45 CST 2014  
        线程C运行,i=1  
        Tue Apr 22 11:10:50 CST 2014  
        线程C运行,i=2  
        Tue Apr 22 11:10:55 CST 2014  
        线程C运行,i=3  
        Tue Apr 22 11:11:00 CST 2014  
        线程C运行,i=4  

    线程终止:

    如果主线程是5000,那么会先run正常,在被终止

        package xianchengcaozuo;  
        //当一个线程运行的时候,另一个线程可以通过interrupt方法种植其线程.  
          
          
        class MyThread09 implements Runnable {  
            public void run() {  
                System.out.println("1、进入run方法");  
                for (int i = 0; i < 5; i++) {  
                    try {  
                        Thread.sleep(5000);  
                        System.out.println("2、休眠已经完成");  
                    } catch (Exception e) {  
                        System.out.println("3、休眠被终止");  
                        return;  
                    }  
                    System.out.println("4、run方法正常结束");  
                }  
            }  
        }  
        class Threadinterrupt{  
            public static void main(String[] args) {  
                MyThread09 my = new MyThread09();  
                Thread t = new Thread(my,"线程");  
                t.start();  
                try {  
                    Thread.sleep(2000);  
                } catch (Exception e) {  
                }  
                t.interrupt();  
            }  
        }  
        1、进入run方法  
        3、休眠被终止  

    线程的优先级:

        package xianchengcaozuo;  
          
        public class Threadjibie {  
            public static void main(String[] args) {  
                Demo5 my = new Demo5();  
                Thread t1 = new Thread(my,"线程A");  
                Thread t2 = new Thread(my,"线程B");  
                Thread t3 = new Thread(my,"线程C");  
                //设置线程优先级  
                t1.setPriority(Thread.MIN_PRIORITY);  
                t2.setPriority(Thread.NORM_PRIORITY);  
                t3.setPriority(Thread.MAX_PRIORITY);  
                t1.start();  
                t2.start();  
                t3.start();  
            }  
        }  
        class Demo5 implements Runnable {  
            public void run() {  
                for (int i = 0; i < 5; i++) {  
                    try {  
                        Thread.sleep(500);  
                    } catch (Exception e) {  
                    }  
                    System.out.println(Thread.currentThread().getName() + "运行,i = " + i);  
                }  
            }  
            }  
        线程C运行,i = 0  
        线程B运行,i = 0  
        线程A运行,i = 0  
        线程C运行,i = 1  
        线程B运行,i = 1  
        线程A运行,i = 1  
        线程C运行,i = 2  
        线程B运行,i = 2  
        线程A运行,i = 2  
        线程C运行,i = 3  
        线程B运行,i = 3  
        线程A运行,i = 3  
        线程C运行,i = 4  
        线程B运行,i = 4  
        线程A运行,i = 4  


    主方法的优先级是中级

    线程的礼让:

        package xianchengcaozuo;  
        //yield(),线程礼让,将操作让给其它线程  
        public class ThreadLirang {  
            public static void main(String[] args) {  
                Demo6 d1= new Demo6();  
                  
                Thread t1 = new Thread(d1);  
                Thread t2 = new Thread(d1);  
                t1.start();  
                t2.start();  
                  
            }  
        }  
        class Demo6 implements Runnable{  
          
            @Override  
            public void run() {  
                // TODO Auto-generated method stub  
                for(int i=0;i<5;i++){  
                    System.out.println(Thread.currentThread().getName()+"运行,i="+i);  
                    if(i==3){  
                        Thread.currentThread().yield();  
                        System.out.println(Thread.currentThread().getName()+"礼让");  
                    }  
                }  
            }  
              
              
              
        }  

    结果: Thread-1运行,i=0
    Thread-1运行,i=1
    Thread-1运行,i=2
    Thread-1运行,i=3
    Thread-0运行,i=0
    Thread-0运行,i=1
    Thread-0运行,i=2
    Thread-0运行,i=3
    Thread-0礼让
    Thread-0运行,i=4
    Thread-1礼让
    Thread-1运行,i=4

  • 相关阅读:
    第十五篇: Ajax Control Toolkit 控件包3. DragPanel (拖动效果)
    希望找人一起写个 Ajax 的封装
    第三篇: Silverlight 2.0 下载与安装
    ASP.NET AJAX 1.0 英文文档,视频教程
    第十四篇: 建立 AJAX 母版页 (为了后面例子方便)
    第十三篇: Ajax Control Toolkit 控件包2. CollapsiblePanel (展开和折叠效果)
    几种流行的JS框架的选择
    第二篇: Silverlight 下载与安装
    (原创)WINCE流驱动的动态加载调试
    SQL语法,SQL语句大全,SQL基础(转载)
  • 原文地址:https://www.cnblogs.com/diaozhaojian/p/6391932.html
Copyright © 2020-2023  润新知