线程相关概念
- 一个进程至少有一个线程
- 在Java中,一个进程至少有两个线程,一个是main线程,一个是垃圾回收线程
- 守护线程:JVM会在只剩下守护线程的时候结束,也就是说所有非守护线程结束,JVM就会结束
- 典型例子:main线程(非守护线程,不能设置成守护线程),垃圾回收线程(守护线程)
- 线程的状态:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED
- 线程优先级:[1,10]. 优先级越高不代表一定优先于优先级低的线程执行,而是会比低的得到更多的CPU资源
- 打印线程的相关信息
System.out.println("getName: "+Thread.currentThread().getName());
System.out.println("getContextClassLoader: "+Thread.currentThread().getContextClassLoader());
System.out.println("getId: "+Thread.currentThread().getId());
System.out.println("getPriority: "+Thread.currentThread().getPriority());
System.out.println("getStackTrace: "+Thread.currentThread().getStackTrace());
System.out.println("getState: "+Thread.currentThread().getState());
System.out.println("getThreadGroup: "+Thread.currentThread().getThreadGroup());
System.out.println("getUncaughtExceptionHandler: "+Thread.currentThread().getUncaughtExceptionHandler());
System.out.println("getClass: "+Thread.currentThread().getClass());
System.out.println("toString: "+Thread.currentThread().toString());
System.out.println("isAlive: "+Thread.currentThread().isAlive());
System.out.println("isDaemon: "+Thread.currentThread().isDaemon());
System.out.println("isInterrupted: "+Thread.currentThread().isInterrupted());
System.out.println("Thread: "+Thread.currentThread());
创建线程的四种方式
- 继承Thread
- Runnable
- Callable
- 线程池