8.12~8.18 每周总结

本周Java学习如下:

多线程学习:

package duoxiancheng;

public class Music extends Thread{
    @Override
    public void run() {
        for(int i=0;i<1000;i++)
            try {
                Thread.sleep(100);
                System.out.println("听音乐");
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
    }

    
}
package duoxiancheng;

public class Eat extends Thread{

    @Override
    public void run() {
        for(int i=0;i<1000;i++) //间隔零点一秒
            try {
                Thread.sleep(100);
                System.out.println("吃饭");

            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
    }

}
package duoxiancheng;

public class Demo1 {
    /**
     * 听音乐
     */
    private static void music() {
        for(int i=0;i<1000;i++)
            System.out.println("听音乐");
    }
    /**
     * 吃饭
     */
    private static void eat() {
        for(int i=0;i<1000;i++)
            System.out.println("吃饭");
        
    }
    
    public static void main(String[] args) {
        /*music();
        eat();*/
        
        
        //多线程
        /**
         * 利用多线程实现一边吃饭一边听音乐
         */
        Music musicThread=new Music();
        Eat eatThread=new Eat();
        musicThread.start();
        eatThread.start();
    }

}

实现同时执行 吃饭和听音乐的操作

     多线程的引入,使两个操作同时进行,有序。

package duoxiancheng;

public class Demo3 implements Runnable{
    
       @Override
        public void run() {
            // TODO Auto-generated method stub
            for(int i=0;i<10;i++) {
                // 获取当前线程
                Thread  t=Thread.currentThread(); 
            System.out.println(t.getName()+":"+i); //返回线程名称
            }
        }
       public static void main(String[] args) {
        Demo3 demo3=new Demo3();
        Thread t1=new Thread(demo3);
        System.out.println("t1是否活动:"+t1.isAlive());
        t1.start();
        //检查线程是否是活动状态
         System.out.println("t1是否活动:"+t1.isAlive());
        
    }
}

以上代码实现了返回线程的名称,并且检查线程的活动状态是否活动。

package duoxiancheng;

public class Demo5 implements Runnable{
    

    @Override
    public void run() {
        // TODO Auto-generated method stub
        for(int i=0;i<10;i++) {
            // 获取当前线程
            Thread  t=Thread.currentThread(); 
        System.out.println(t.getName()+":"+i); //返回线程名称
        }
    }
    
   public static void main(String[] args) {
    /**
     * 设置线程优先级
     */
       Demo5 demo5=new Demo5();
    Thread t1=new Thread(demo5,"X 1");
    Thread t2=new Thread(demo5,"Y 1");
    Thread t3=new Thread(demo5,"Z 1"); 
    t1.setPriority(Thread.MAX_PRIORITY);  
    t2.setPriority(Thread.MIN_PRIORITY);
    t3.setPriority(Thread.NORM_PRIORITY);
    t1.start();
    t2.start();
    t3.start();
    }

}

实现线程的优先级,x优先级最大,z其次,y最小,程序按优先级由高到低执行。

package duoxiancheng;

public class Demo6 implements Runnable{

    @Override
    public void run() {
        // TODO Auto-generated method stub
        for(int i=0;i<10;i++) {
            try {
                Thread.sleep(100);
                // 获取当前线程
                Thread  t=Thread.currentThread(); 
            System.out.println(t.getName()+":"+i); //返回线程名称
            if(i==5)
            {
                System.out.println("线程礼让:");
                Thread.currentThread().yield();
            }
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
    }
   public static void main(String[] args) {
    Demo6 demo6=new Demo6();
    new Thread(demo6,"a 1").start();;
    new Thread(demo6,"b 2").start();


}
}

线程礼让:当a执行到5时先执行b,然后当b执行到5时先执行a。即执行到一定步骤,顺序会发生改变。

原文地址:https://www.cnblogs.com/cxy0210/p/11371718.html