首页 > 代码库 > 多线程学习笔记(一)

多线程学习笔记(一)

package com.thread;/** * 创建一个子线程输出从1~100的自然数 * 创建多线程的第一种方式,继承Thread类 * getName获取当前线程的名称 * setName设置当前线程的名称 * start启动子线程 * yield当前线程会释放cpu资源,如果没有其他线程占用那么该线程还会继续执行,如果有其他线程那么可能会被其他线程抢占 * join在A线程中调用B线程的该方法,表示:当A方法执行到该方法时,执行B方法,等待B方法执行完成之后,再继续执行 * isAlive判断当前线程是否还存活 * sleep(long L):显示的让当前线程睡眠L毫秒 * 线程通信,wait notify  notifyAll *  * 设置线程的优先级 * getPriority()获取当前线程的优先级 * setPriority()设置当前线程的优先级,设置线程的优先级并不会让该线程执行完成之后再执行另一个线程,只能让该线程抢到cpu资源的概率变大,一般默认优先级为5 *  * @author Administrator * */public class TestThread1 {    public static void main(String[] args) throws InterruptedException {//        Thread.currentThread().setName("主线程");//        SubThread1 subThread1 = new SubThread1();//        subThread1.setName("子线程");//        subThread1.setPriority(Thread.MAX_PRIORITY);//设置子线程的优先级为最大:10//        subThread1.start();//        for(int i = 1; i <= 100; i++){//            System.out.println(Thread.currentThread().getName()+":"+Thread.currentThread().getPriority()+":"+i);//            if( i == 50){//                subThread1.yield();//当主线程执行到50的时候释放cpu资源//            }//            if( i == 20){//                try {//                    subThread1.join(); //当主线程执行到20的时候让子线程加入进来//                } catch (InterruptedException e) {//                    // TODO Auto-generated catch block//                    e.printStackTrace();//                }//            }//        }                                //调用不同的线程打印偶数和奇数        OddTest odd = new OddTest();        odd.setName("打印奇数");        odd.start();        EvenTest even = new EvenTest();        even.setName("打印偶数");        even.start();    }    }class SubThread1 extends Thread{    //重写run 方法    @Override    public void run() {        for(int i = 1; i <= 100; i++){//            try {//                Thread.sleep(1000); //每次睡眠1秒//            } catch (InterruptedException e) {//                // TODO Auto-generated catch block//                e.printStackTrace();//            }            System.out.println(Thread.currentThread().getName()+":"+Thread.currentThread().getPriority()+":"+i);        }    }}        /**     * 打印奇数     * @author Administrator     *     */    class OddTest extends Thread{        @Override        public void run() {            for(int i = 0; i < 100; i++){                if( i % 2 != 0){                    System.out.println(Thread.currentThread().getName()+":"+i);                }            }        }            }        /**     * 打印偶数     * @author Administrator     *     */    class EvenTest extends Thread{        @Override        public void run() {            for(int i = 0; i < 100; i++){                if( i % 2 == 0){                    System.out.println(Thread.currentThread().getName()+":"+i);                }            }        }            }

 

多线程学习笔记(一)