zoukankan      html  css  js  c++  java
  • 多线程

    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退出,该方法必须在启动线程前用
  • 相关阅读:
    静态区,堆,栈
    C语言位操作
    引用形参
    联合体/共同体 union
    typedef的使用
    有源晶振和无源晶振
    什么是SMT钢网
    点名游戏~自己先作
    我同学——应聘阿里巴巴之经过
    阳光明媚的一天~|~
  • 原文地址:https://www.cnblogs.com/rrb520/p/5272406.html
Copyright © 2011-2022 走看看