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







  • 相关阅读:
    Android 编辑框(EditText)属性学习
    读书笔记 -《高效程序猿的45个习惯-敏捷开发修炼之道》
    Launcher3实现壁纸居中
    Trie树的常见应用大总结(面试+附代码实现)
    LeetCode Summary Ranges
    abap选择屏幕上的button
    SQLite Expert表分离和解决SQLite Expert删除表后大小不变的问题
    git push 失败
    动态限制EdiText仅仅能输入特定字符
    DateTime类常用技巧摘录
  • 原文地址:https://www.cnblogs.com/ysmdbk/p/11236403.html
Copyright © 2011-2022 走看看