线程创建
- 使用匿名内部类新建Thread,无返回结果
Thread thread1 = new Thread() {
@Override
public void run() {
log.debug("running...");
}
};
thread1.setName("t1");
thread1.start();
Thread.sleep(1000);
log.debug("running...");
- 实现Runnable接口结合Thread类使用,无返回结果
Runnable runnable = () -> log.debug("running...");
Thread thread1 = new Thread(runnable);
thread1.setName("t1");
thread1.start();
TimeUnit.SECONDS.sleep(2);
log.debug("running...");
- FutureTask使用函数时接口实现Callable创建线程,有返回结果
Callable callable = new Callable() {
@Override
public Integer call() throws Exception {
log.info("running...");
TimeUnit.SECONDS.sleep(5);
return 123;
}
};
FutureTask futureTask = new FutureTask(callable);
Thread thread1 = new Thread(futureTask, "SKT1");
thread1.start();
log.info("running...");
Integer integer = futureTask.get();
log.info("thread return data: {}", integer);
windows下查看线程方式
tasklist 查看所有进程的PID
taskkill 杀死当前进程: taskkill /F /PID 19396
jps 查看当前系统的所有java进程
jstack PID 查看当前时间的进程完整状态信息
linux下查看线程方式
ps -ef | grep java 查看具体某种类型的进程
jps 查看当前系统的所有java进程
kill PID 杀死当前进程
top 动态查看所以进程
top -H -p PID 查看当前进程的线程
jstack PID 查看当前时间的进程完整状态信息
windows下使用jconsole
命令行输入:
1. cmd
2. jconsole