zoukankan      html  css  js  c++  java
  • 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(); //大概率应该是使用循环







  • 相关阅读:
    分布式算法(一致性Hash算法)
    浅析Postgres中的并发控制(Concurrency Control)与事务特性(上)
    PostgreSQL内核分析——BTree索引
    源码安装postgresql数据库
    QEMU漏洞挖掘
    mysql远程连接数据库
    C++学习之路(十一):C++的初始化列表
    搭建本地git服务器
    C++面试常见问题
    SkipList 跳表
  • 原文地址:https://www.cnblogs.com/ysmdbk/p/11236403.html
Copyright © 2011-2022 走看看