JAVA并发编程基础篇(一)

JAVA并发编程基础篇(一)

并发与并行

并发:两个或多个事件在同一时间间隔内发生。

并行:两个或多个事件在同一时刻发生。

举个例子:4*400米比赛,不同队伍是并行,同一队伍是并发,映射到计算机中,交接棒相当于CPU资源,不同的CPU是并行,单核CPU交替执行不同的进程是并发。

扩展:默认情况下Tomcat可以支持的最大请求数是150,也就是说可以同时支持150个并发。

线程

线程的定义

线程(thread)是操作系统能够进行运算调度的最小单位,一个进程至少包含一个线程。

线程的创建

  1. 继承 Thread 类

  2. 实现 Runnable 接口

  3. Callable/Future 带返回值

线程的状态

线程有6种状态:

  1. New:新创建
  2. Runnable:运行
  3. Blocked:阻塞
  4. Waiting:等待
  5. Timed Waiting:计时等待
  6. Terminated:终止

扩展:操作系统(Operating System,简称OS)

在这里插入图片描述

线程的启动
  1. new Thread().start(); //启动一个线程

  2. Thread t = new Thread(); t.run();

线程的终止
  1. run方法执行结束

  2. stop() 强制终止,不建议使用

  3. new Thread().interrupt(), 中断,设置interrupt=true;

    public class InterruptDemo implements Runnable {
        @Override
        public void run() {
            while (!Thread.currentThread().isInterrupted()){
                try {
                    TimeUnit.SECONDS.sleep(200);
                } catch (InterruptedException e) { // interrupt复位 = false
                    e.printStackTrace();
                    // 继续中断或抛异常
                    Thread.currentThread().interrupt(); //再次中断
                }
            }
            System.out.println("end");
        }
    
        public static void main(String[] args) throws InterruptedException {
            Thread thread = new Thread(new InterruptDemo());
            thread.start();
            Thread.sleep(100); //睡眠,保证线程进入循环
            thread.interrupt(); //中断 interrupt=true
        }
    }
    
扩展

怎么查看进程:

  1. jsp 查看当前进程的PID
  2. jstack+PID 查看堆栈信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值