java并发编程之线程的基本概念

版权声明:转载请注明出处 https://blog.csdn.net/FGY_u/article/details/83663627

本文为学习笔记。源自学习微信公众号“我们都是小青蛙”。

本篇文章将记录如何使用java中的线程。

main线程

main方法是程序入口,我们对已经编译好的class文件调用java命令时就可以运行一个java程序。这个过程中,其实系统自动为我们创建了一个进程和一个线程,而且这个线程的名字就叫做main。main线程是用来执行我们的程序的,不过系统还会为我们创建一些辅助线程来帮助main线程的执行。

在java中,使用线程可以被理解为任务。我们需要做的事情,就是

  • 定义任务
  • 使用任务

定义任务

java中的任务被抽象成了一个Runnable接口:

public interface Runnable {
    public void run();
}

我们的自定义任务需要去实现这个接口,并把任务的详细内容写在覆盖的run方法里,比如我们定义一个输出一个字符串的任务:

public class PrintTask implements Runnable {

    @Override
    public void run() {
        System.out.println("输出一行字");
    }
}

执行任务

java中的Thread类来代表一个线程,我们需要关注它的这几种构造方法:
在创建线程对象的时候传入需要执行的任务以及这个线程的名称。

   Thread(Runnable target)

只传入需要执行的任务,名称是系统自动生成的,或者可以在创建对象后再通过别的方法修改名称。

     Thread(String name)

只传入待创建线程的名称。

      Thread()

啥都不传,就是单纯构造一个线程对象而已~

下面我们来执行上面的任务。

public class Test {
    public static void main(String[] args) {
        new Thread(new PrintTask()).start();
    }
}

//输出: 输出一行字

Thread类本身就代表了一个Runnable任务,我们看Thread类的定义。

public class Thread implements Runnable {

    private Runnable target;

    @Override
    public void run() {
        if (target != null) {
            target.run();
        }
    }

    // ... 为省略篇幅,省略其他方法和字段
}

所以,启动任务我们也可以这样写。

public class PrintThread extends Thread {

    @Override
    public void run() {
        System.out.println("输出一行字");
    }
}

 class Test {

    public static void main(String[] args) {
        new PrintThread().start();
    }
}

线程的一些方法

获取线程ID:

 long getId()

获取和设置线程名称

       void setName(String name)
       String getName()

获取和设置线程优先级

      void setPriority(int newPriority)
      int getPriority()

休眠

  static void sleep(long millis) throws InterruptedException

猜你喜欢

转载自blog.csdn.net/FGY_u/article/details/83663627