多线程

1 多线程的介绍

进程:进程指正在运行的程序。

线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。

总结一句话就是:一个程序运行后至少有一个进程,一个进程中可以包含多个线程

什么是多线程呢?即就是一个程序中有多个线程在同时执行。

关于主线程:

public class Demo01 {
    //主线程
    //程序从上往下执行的过程
    //javac编译Demo01
    //jvm运行main方法,找操作系统os,开启线程
    //对于CPU来说就有了一条执行路径,运行方法main的这条路径有个名字
    //叫“main”即 主线程
    public static void main(String[] args) {
        method01();
        System.out.println(Math.abs(-9));
    }
    public static void method01(){
        for(int i=0;i<10000;i++){
            System.out.println(i);
        }
    }
}

创建线程的方式一    Thread类

 构造方法有:

常用方法:

public class Demo02 {
    //开线程的第一种方法
    //1.定义Thread子类,继承Thread,重写run()方法
    //2.在测试类中,创建Thread子类对象
    //3.用子类对象调用start()方法,只能调用一次
    public static void main(String[] args) {
        //创建线程对象
        ThreadDemo td=new ThreadDemo();
        //开启线程
        //start:1.让线程执行2.让jvm调用线程中的run方法
        td.start();
        for(int i=0;i<100;i++){
            System.out.println("main..."+i);
        }
    }
}

自定义线程类:

public class ThreadDemo extends Thread {
    public ThreadDemo(){
        
    }
    public ThreadDemo(String name){
        super(name);
    }
    public void run(){
        System.out.println(getName());
        for(int i=0;i<100;i++){
            try {
                sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println("thread..."+i);
        }
    }
}

 

 3.获取线程名称

 Thread.currentThread()获取当前线程对象

 Thread.currentThread().getName();获取当前线程对象的名称

创建线程的方式二  实现Runnable接口

l  Thread类构造方法

public class MyRunnable implements Runnable {

    public void run() {
        for(int i=0;i<100;i++){
            System.out.println(Thread.currentThread().getName()+"..."+i);
        }
    }
    
}
public class Demo01 {
    //第二种创建线程的方式
    //1.创建实现类,实现Runnable接口,重写run方法
    //2.在测试类中创建实现类对象,创建线程对象
    //将实现类对象传入线程对象的构造方法
    //3.用线程对象开启线程
    //好处:高内聚(自己的事情自己干),低耦合
    public static void main(String[] args) {
        //创建线程任务对象
        MyRunnable mr=new MyRunnable();
        //创建线程对象
        Thread t1=new Thread(mr);
        //开启线程
        t1.start();
        Thread t2=new Thread(mr);
        t2.start();
    }
}

用一句话来创建线程并开启线程

public class Demo02 {
    public static void main(String[] args) {
/*        //多态定义一个runnable实现类对象
        //来描述线程对象
        Runnable r=new Runnable() {
            public void run() {
                System.out.println("这是重写后的run方法");
            }
        };
        //创建线程
        Thread t=new Thread(r);
        t.start();*/
        //一句话创建线程并开启线程
        new Thread(new Runnable(){
            public void run() {
                System.out.println("run方法");
            }
        }).start();
    }
}
原文地址:https://www.cnblogs.com/zzq123/p/10224981.html