Thread

概念
进程:正在运行的程序,一个进程至少有一个线程.
线程:正在执行程序的最小单元,线程之间是互相独立的.
线程的分类:
1.主线程
2.用户线程
3.守护线程(GC等)

线程的状态:
创建线程---就绪状态---执行状态---等待/挂起---异常/死亡

实现线程的过程1:
1.描述一个类,继承父类Thread
2.重写run方法
3.new一个线程对象 调用start()方法 让线程就绪
//1.描述一个类 继承父类Thread
public class MyThread extends Thread{
    @Override
    //2.重写run方法
    public void run() {
        for (int i = 1; i <10; i++) {
            try {
                Thread.currentThread().sleep(2000);
                System.out.println(MyThread.currentThread().getName()+"第"+i+"次");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }
    }
}

实现线程的过程2(不能继承Thread的情况):
1.描述一个类,实现接口Runnable
2.重写run方法
3.new一个对象,构建线程对象,调用start()方法 让线程就绪

//    1.描述一个类,实现接口Runnable
public class MyThread2 implement Runable{
    @Override
//        2.重写run方法
    public void run() {
        for (int i = 1; i <10; i++) {
            try {
                Thread.currentThread().sleep(7000);
                System.out.println(MyThread.currentThread().getName()+"第"+i+"次");
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
    }
}

public class TestThread {
    public static void main(String[] args) {
        //3.new一个线程对象 调用start()方法 让线程就绪
        MyThread mythread=new MyThread();
        mythread.start();
        //3.new一个对象,构建线程对象,调用start()方法 让线程就绪
        MyThread2 mythread2=new MyThread2();
        Thread t=new Thread(mythread2,"线程的名称,可以不写取默认");
        t.start();

    }
}

 这周看了下lambda表达式,更简单的是现实

Thread t2 =new Thread(() -> System.out.println(Thread.currentThread().getName()));
t2.start();

如果相等几个异步的进程全部执行完以后在向下执行,就用到join()方法

t2.join(); //大概率应该是使用循环

 

 

 








posted @ 2019-07-24 10:34  国际惯例  阅读(246)  评论(0编辑  收藏  举报