今日在线

南京有什么好玩的地方,宝宝起名,风景-热爱考试,我们的热爱与众不同,让开始变简单

1.1 Thread 和 Runnable

每个Java应用程序都有一个履行main()函数的默许主线程。 封装了代码履行序列的线程目标被称为Runnable。 Java虚拟机给每条线程分配独立的JVM栈空间,栈空间为每条线程独自预备了一份办法参数、局部变量以及返回值的复制。 Java线程分为看护线程和非看护线程。 一条看护线程扮演非看护线程辅佐者的人物,并且会再应用程序最终一条非看护线程消失之后主动逝世,这时应用程序才干停止。

1.1.1 创立Thread和Runnable目标

// lambda jdk1.8+
// Runnable
Runnable r = () -> System.out.println("[lambda] Hello from thread");
Thread t = new Thread(r);
t.start();
// Thread
static class MyThread extends Thread {
@Override
public void run() {
System.out.println("[thread] Hello from thread");
}
}
MyThread myThread = new MyThread();
myThread.start();

1.1.2 获取和设置线程状况

Java中两种线程:用户线程(User Thread)、看护线程(Daemon Thread) GC便是典型的看护线程,主线程停止,一切看护线程悉数停止 经过setDaemon设置,主线程不能设置 一切非看护线程停止,主线程才停止 履行规矩:

  • 一切用户线程停止,主线程才会停止
  • 主线程停止,一切看护线程都会停止

1.1.3 发动线程

start()

1.2 操作更高档的线程使命

  • 中止
  • 睡觉
  • 加入到另一线程中join

1.2.1 中止线程

  • interrupt()
  • isInterrupt()
  • interrupted()
  • isInterrupted()

1.2.2 等候线程

  • join() 无限期的等候直至该线程逝世
  • join(long millis) 该线程逝世之前最多等候millis毫秒,millis=0,无限期等候,同join(); millis<0,IllegalArgumentException被抛出
  • join(long millis, int nanos) nanos [0, 999999)
try {
t.join();
}catch (InterruptedException e){
e.printStackTrace();
}

相关文章