栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2021-10-08——线程和进程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-10-08——线程和进程

线程和进程
        • 获取CPU核数
        • 线程的状态
        • wait/sleep的区别

进程一个程序的集合,一个程序通常包含多个线程(最少一个)
JAVA默认有几个线程? main ,GC
JAVA开启线程有
Thread,Runnable,Callable
Java真的可以开启线程嘛?不可以直接开启

这是一个C++底层,Java是没有权限操作底层硬件的

    public synchronized void start() {
        
        if (threadStatus != 0)
            throw new IllegalThreadStateException();

        
        group.add(this);

        boolean started = false;
        try {
            start0();
            started = true;
        } finally {
            try {
                if (!started) {
                    group.threadStartFailed(this);
                }
            } catch (Throwable ignore) {
                
            }
        }
    }
	//这是一个C++底层,Java是没有权限操作底层硬件的
    private native void start0();

Java是没有权限去开启线程、操作硬件的,这是一个native的一个本地方法,它调用的底层的C++代码。
并发、并行
并发: 多线程操作同一个资源。
CPU 只有一核,模拟出来多条线程,天下武功,唯快不破。那么我们就可以使用CPU快速交替,来模拟多线程。
并行: 多个人一起行走

获取CPU核数
package com.Thread;
public class CPU {
        public static void main(String[] args) {
            //获取cpu的核数
            System.out.println(Runtime.getRuntime().availableProcessors());
    }
}
线程的状态
public enum State {
 		//创建
        NEW,
		//运行
        RUNNABLE,
		//阻塞
        BLOCKED,
      	//等待
        WAITING,
		//超时等待
        TIMED_WAITING,
        //终止
        TERMINATED;
    }
wait/sleep的区别

1、来自不同的类

wait => Object
sleep => Thread

1,一般情况企业中使用休眠是:

TimeUnit.DAYS.sleep(1); //休眠1天
TimeUnit.SECONDS.sleep(1); //休眠1s

2、关于锁的释放

wait 会释放锁;
sleep睡觉了,不会释放锁;

3、使用的范围是不同的

wait 必须在同步代码块中;
sleep 可以在任何地方睡;

4、是否需要捕获异常

wait是不需要捕获异常;
sleep必须要捕获异常;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/307149.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号