初识进程,线程

1.进程,线程的概念
进程:一个运行的程序,一个进程中包含N个线程,进程一旦终止,其内的线程也将不复存在
线程:进程中的一个任务
2.进程和线程的区别
1.每个进程拥有自己的一整套变量,是操作系统中资源分配的最小单位
线程依托于进程存在,多个线程共享进程的资源,OS中任务调度的基本单位

2.启动、撤销一个进程的开销要比启动,撤销一个线程大得多(线程轻量级)

3.没有进程就没有线程,进程一旦终止,其内的线程1全部撤销

3…高并发:同一时刻线程的访问量非常非常非常高
分布式:同一个系统在多个服务器上运行
4.Java多线程实现
4.1继承Thread类,实现多线程
java.lang.Thread是多线程操作的核心类,JDK1.0提供
新建一个线程最简单的方法就是直继承Thread类而后覆写类中的run()方法(相当于主方法)
无论哪种方式实现多线程,线程启动一律调用Thread类提供的start()方法

start()方法解析:
1.首先检查检查状态1是否为0(线程默认状态为0表示未启动),如果线程已经启动,再次调用start方法()会抛出IllegalThreadStateException。
一个线程的start()只能调用一次
2.private native void start0()通过start0真正将线程启动
3.JVM调用start0方法进行资源分配与系统调度,准备好资源启动线程后回调run()来进行线程的具体任务

缺点:单继承
4.2 Runnable接口实现多线程 ( @FunctionalInterface 注解 函数式编程接口:检查当前接口是否只有一个抽象方法(一个抽象方法,default定义的普通方法))
1**.Java中多线程的处理就是一个典型的代理模式。**
其中Thread类完成资源调度、系统分配辅助线程从业务类;自定义类负责真实业务实现

2…使用Runnable接口实现的多线程程序类可以更好的描述资源共享

4.3 Callable 接口实现多线程-------唯一一个有返回值的线程实现方式
juc:高并发程序包

Java.util.concurrent.Callable ;
V call()throws Exception:线程执行后有返回值

java.util.Future:
V get() throws InertuptedException,ExecutionException:
取得callable接口call方法的返回值

当线程需要返回值时只能采用callable接口实现多线程
5.多线程常用操作方法

5.1线程的命名与取得

1.通过构造方法给线程命名
public Thread(String name)
public Thread (Runnable target,String name)

.2.设置线程命名

public final synchronize void setName(String name)

3.取得线程名称

public final String getName()

4.取得当前正在执行的线程对象

public static native Thread currentThread()
Java中的main 实际上是一个主线程main

5.2 线程休眠:指的是让线程暂缓执行,等到预计时间再恢复执行

线程休眠会立即交出CPU,让CPU去执行其他任务,并且不会释放对象锁;
public static native void sleep(Long millis)throws InterruptedException;

5.3 线程让步yield()

暂停当前正在执行的线程对象,并执行其他线程
yield()会让当前线程交出CPU,但不一定立即交出。yield()交出CPU后只能让拥有相同优先级的线程有获取CPU的机会。yield()不会释放对象锁;

5.4 join()方法
等待该线程终止。如果在主线程中调用该方法会让主线程 休眠,让调用该方法的线程先执行完毕后再恢复执行主线程(在那个方法中调用,那个方法就休眠)
public final void join() throws InterruptedException (join底层是wait wait是Object类的本地方法)
join()只是对object类wait()做了一层包装而已

5.6线程的优先级([1-10])
线程的优先级是指 ,优先级越高越有可能先执行而已,仅仅是有可能而已

设置优先级
dpublic final void setPriority(int newPriority)
取得优先级
public final int getPriority()
Thread.MAX_PRIORITY = 10;
Thread.NORM_PRIORITY = 5;
Thread.MIN_PRIORITY = 1

线程的继承性:优先级可以继承
在A线程中启动B线程,则A和B的优先级一样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值