java 中的多线程简单介绍

package com.zxf.demo;
/*
 * 多线程的实现方式两种?
 * 一、.实现 runnable  接口
         * 2.重写run方法                Run():当一个线程启动后,就会自动执行该方法
         * 3.在主方法中new一个           java 对象  Demo01 demo01=new Demo01();
         * 4.将其放在  thread中        Thread t1=new Thread(demo01);    
         * 5.调用start方法            t1.start();
 * 
 *     使用麻烦
 *     避免了单继承的局限性
 * 
 *二、继承Thread父类:
 *        缺点:单继承的局限性
 *         优点:使用方便
 * 
 * 
 三、五种状态?
 * 创建  就绪  运行 阻塞 死亡!
 * 
 * 
 四、 常用方法?
 * 1.setpriority(int newPriority)        更改优先级。增大可能性。【1-10】5
 * 2.sleep ();                        休息一会 让线程
 * 3.void join();                          强制的让某一个线程 先执行完 类似于插队的效果!
 * 4.thread.yield();                       礼让的方法,让当前线程礼让别的线程,有可能成功。和join的方法很像。
 * 5.void interrupt()                    中断线程                
 * 6.boolean isAlive()                    测试线程是否处于活动状态
 * 7.Thread.currentThread().getName()    获得该线程的名字
 * 
 五、线程同步的问题?
      解决方法 1.同步方法
                 2.同步代码块
                 
                 
 六、启动一个线程是run()还是start()?它们的区别?
        Start方法是将线程启动起来,遵循生命周期的运行流程的,
        按照该方法启动的线程才可以轮番被cpu调度,随机执行,
        但是run方法就是一个普通方法,若调用该方法,就没有将该线程进去启动,也就没有线程运行的先决条件了,
        所以该线程就不会再轮番的被cpu进行调度了
 */
public class Demo01 implements Runnable{

    @Override
    public void run() {
        for (int i = 0; i <30; i++) {
            System.out.println("当前运行的线程:"+Thread.currentThread().getName()+"----"+i);
        }
        
    }
    public static void main(String[] args) {
        Demo01 demo01=new Demo01();
        Demo01 demo02=new Demo01();
        
        //创建了你定义的线程类的线程对象。
        Thread t1=new Thread(demo01);            //默认名字 Thread-0
        Thread t2=new Thread(demo02, "哈哈");   //给线程  起名字 
        
        t1.start();
        t2.start();
    }

}

 

posted @ 2019-07-02 18:46  送外卖的小菜鸟  阅读(180)  评论(0编辑  收藏  举报