美文网首页
Java并发编程基础教程—并发基础(二)

Java并发编程基础教程—并发基础(二)

作者: CHFIsMIne | 来源:发表于2020-08-12 00:04 被阅读0次

Java线程

3.1线程的创建和运行

方法1

//创建线程对象
Thread t = new Thread() {  
   public void run() {  
          // 要执行的任务
   }
};
// 启动线程
t.start();

方法2

Runnable runnable = new Runnable() {  
    public void run() {
        // 要执行的任务
       }  
 };
 // 创建线程对象
 Thread  t  = new Thread(runnable);
 //启动线程
 t.start();

Java8 使用lambda表达式
Runnable r = () -> { // 要执行的任务};

原理之Thread 与 Runnable 的关系

分析 thread 的源码,理清它与Runnable的关系
小结

  • 方法1 是把线程和任务合并在了一起,方法2 是把线程和任务分开了
  • 用Runnable 更容易与线程池等高级API配合
  • 用Runnable 让任务类脱离了Thread 继承体系,更灵活

方法3
FutureTask 能够接受Callable类型的参数,用来处理有返回结果的情况

//创建任务对象
FutureTask<T> task = new FutureTask( ()-> {
    log.debug("hello");
    return 100;
})
// 参数1 是任务对象;参数2 是线程名字 推荐
new Thread(task,"t3").start();

//主线程阻塞,同步等待task 执行完毕的结果
T result = task.get();
log.debug("结果是:{}",result);

3.3查看进程线程的方法

Windows

  • 任务管理器可以查看进程和线程数,也可以用来杀死进程
  • tasklist 查看进程
  • taskkill 杀死进程

Linux

  • ps -fe 查看所有进程
  • ps - ft -p<PID> 查看某个进程(PID)的所有线程
  • kill 杀死进程
  • top 按大写H切换是否显示线程
  • top -H -p <PID>查看某个进程(PID)的所有线程

JAVA

  • JPS 命令查看所有Java进程
  • jstack <PID>查看某个Java进程<PID> 的所有线程状态
  • Jconsole 查看某个Java进程中线程的运行情况(图形界面)

相关文章

网友评论

      本文标题:Java并发编程基础教程—并发基础(二)

      本文链接:https://www.haomeiwen.com/subject/vgiudktx.html