• 多线程


    1、线程和进程的区别

      ①线程:是一个程序内部不同的执行路径,可以看成轻量级的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。

      ②进程:静态的,包含多个线程,每个进程都有独立的代码和数据空间,进程间的切换会有较大的开销。

    2、创建线程的两种方式

      ①创建一个类继承Thread类

    public class TestDemo {

    public static void main(String[] args) {

    ThreadDemo demo1=new ThreadDemo("线程A");

    ThreadDemo demo2=new ThreadDemo("线程B");

    demo1.start();

    demo2.start();

    }

    }

    class ThreadDemo extends Thread{

    private String name;

    public ThreadDemo(String name){

    this.name=name;

    }

    @Override

    public void run() {

    for(int i=0;i<10;i++){

    System.out.println(name+"运行,i="+i);

    }

    }

    }

      ②创建一个类实现Runnable接口

      

    public class ThreadDemo02 {

    public static void main(String[] args) {

    MyThread myThread=new MyThread("线程A");

    Thread thread=new Thread(myThread);

    thread.start();

    new Thread(myThread).start();

        }

    }

    class MyThread implements Runnable{

    private String name;

    public MyThread(String name){

    this.name=name;

    }

    public void run(){

    for(int i=0;i<10;i++){

    System.out.println(name+"运行,i="+i);

    }

    }

    }

    3、创建线程使用实现Runnable接口的好处

      ①可以避免由于单继承带来的局限性

      ②可以实现资源共享的目的

    4、线程状态的切换

      

    5、线程控制常用方法
      ①isAlive() 判断线程是否还活着,即线程是否还未终止
      ②getPriority() 获得线程的优先级数值
      ③setPriority() 设置线程的优先级数值
      ④sleep() 将当前线程睡眠指定多少毫秒数
      ⑤join() 某线程调用该方法,等待该线程结束,再恢复当前线程的运行
      ⑥yield() 让出CPU,当前线程进入就绪队列等待调度
      ⑦wait() 当前线程进入对象的wait pool
      ⑧notify()/notifyAll() 唤醒对象的wait pool 中的一个/所有等待的线程
      ⑨setDaemon(boolean on) 将线程标记为守护线程或用户线程,当正在运行的线程都是守护线程时,JVM退出,该方法必须在启动线程前用
  • 相关阅读:
    支付宝支付
    String.Format()
    小偷网站工具--Teleport Ultra
    java元注解 @Retention注解使用
    java元注解 @Documented注解使用
    java元注解 @Target注解用法
    java注解 @SuppressWarnings注解用法
    阿里巴巴的全链路压测
    接口测试Case之面向页面对象编写规范
    压力测试性能问题分析
  • 原文地址:https://www.cnblogs.com/rrb520/p/5272406.html
Copyright © 2020-2023  润新知