多线程(1)

先来了解以下线程的一些基本概念:

  • 1.线程是独立的执行路径。
  • 2.在程序运行时,即使没有自己创建的线程,后台也会有多个线程,如主线程,gc线程等。
  • 3.main()称之为主线程,位系统的入口。
  • 4.在一个进程中,如果开辟了多个线程,线程的运行由调度器安排调度,但线程的先后执行顺序时不能人为干预的,调度器与操作系统紧密相关。
  • 5.对同一份资源操作时,会存在资源抢夺的问题,需要加入并发控制
  • 6.线程会带来额外的开销,cpu调度时间。
  • 7.每个线程在自己的工作内存交互,内存控制不当会造成数据不一致。

多线程的创建

三种创建方式:

继承Thread类、实现Runnable接口、实现Callable接口。

第一种,继承Thread类

package com.Thread.lesson01;

/**
 * 创建线程方式-:继承Thread类,重写run()方法,调用start来执行线程
 * 注意:线程开启不一定立即执行,由cpu调度执行
 */
public class TestThread1 extends Thread{
    @Override
    public void run() {
        //run方法线程体
        for (int i = 0;i<10;i++){
            System.out.println("run方法的");
        }
    }

    public static void main(String[] args) {
        //main线程,主线程
        //创建一个线程对象
        TestThread1 thread1 = new TestThread1();
        //调用start方法开启线程
        thread1.start();

        for (int i = 0;i < 200;i++){
            System.out.println("main方法的");
        }
    }
}

第二种,实现Runnable接口

package com.Thread.lesson01;
public class TestThread2 implements Runnable {

    @Override
    public void run() {
        //run方法线程体
        for (int i = 0;i<10;i++){
            System.out.println("run线程");
        }
    }

    public static void main(String[] args) {
        //创建runnable接口的实现类对象
        TestThread2 thread2 = new TestThread2();
        //创建线程对象,通过线程对象开启我们的线程
//        Thread thread = new Thread();
//        thread.start();

        //可以合并起来
        new Thread(thread2).start();

    }
}

 

posted @ 2022-05-03 10:12  长空扯淡  阅读(24)  评论(0)    收藏  举报