多线程_01

如果实现多线程

当cpu是单核的时候,只能执行一个线程,
双核,四核,
如果是单核,线程调用时间比较快,可能会出现多线程并发的假象。

进程:

正在被执行的程序。
一个进程里面可能出现多个线程。

实现多线程常用的两种方法:

1)Thread

(1)继承 Thread
(2)重写run方法
(3)创建线程对象,通过start()启动线程

案例:

/**
 *
 * 将普通类变为线程类:
 *      第一种实现多线程的方法:
 *      (1)extends Thread
 *      (2)重写run方法
 *
 *
 */
public class Demo1 extends Thread{

    //重写run方法
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {

            //Thread.currentThread().getName():打印当前线程的名称
            System.out.println(i+"---"+Thread.currentThread().getName());
        }
    }
}

/**
 * 测试类
 */
class TestDemo1{

    public static void main(String[] args) {

        Demo1 d1 = new Demo1();

        Demo1 d2 = new Demo1();
        //d1.run();//普通方法的执行
        //如果想实现多线程的调用,需要使用start方法
        d1.start();
        d2.start();
    }

}

2)Runnable接口

(1)实现Runnable接口
(2)重写run方法
(3)创建线程类,不能直接调用start方法,需要创建Thread类。
(4)使用new Thread(Runnable) 构造函数
(5)调用thread.start()方法启动线程

案例:


/**
 * 第二种实现多线程的方法
 *  (1)implements Runnable
 *  (2)重写run方法
 */
public class Demo2 implements Runnable{

    @Override
    public void run() {
        for (int i = 0; i < 500; i++) {
            System.out.println(i+"---"+Thread.currentThread().getName());
        }
    }

}

/**
 * 测试Demo2类
 */
class TestDemo2{
    public static void main(String[] args) {
        Demo2 d2 = new Demo2();
        Thread t1 = new Thread(d2);
        t1.start();

        Demo2 d3 = new Demo2();
        Thread t2 = new Thread(d3);
        t2.start();
    }
}

start方法和run方法的区别:
run方法相对是调用普通方法,main方法的单线程执行,
使用start方法,启动多线程。(调用start方法并不会立马执行多线程)

建议:
在实现多线程的时候,建议使用实现 Runnable接口的方法 ,java程序是单继承,多实现。

猜你喜欢

转载自blog.csdn.net/m0_37392489/article/details/86503482
今日推荐