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(); //大概率应该是使用循环