Java学习笔记-Java基础10(进程与线程)

1.进程(process)是操作系统中运行的1个任务,是一块包含了某些资源的内存区域。进程包含1个或多个执行单元,称为线程(thread)。创建1个进程后,该进程会自动申请1个主线程或首要线程

    1)线程只能归属于1个进程,1个进程最少有1个线程

    2)线程的划分尺度小于进程,使得多线程程序的并发性高

    3)进程执行过程中拥有独立的内存单元,而多个线程共享内存

    4)线程不能独立执行,必须依托于应用程序中

    5)多线程的意义在于一个应用程序中,有多个执行部分可以同时执行,但操作系统是以进程来进行调度和管理

2.并发原理:

    多个线程同时运行是假象,其实质是OS将时间划分为多个时间片段,尽可能均匀分配给每个线程,获取时间片的线程被CPU运行,其他线程等待,随微观上是走走停停,但宏观是同时运行

3.创建线程的方式:

    1)继承Thread类,重写run方法

    2)实现Runnable接口,重写run方法

4.线程状态:


5.线程方法:

    1)Thread Thread.currentThread():获取执行当前代码片段的线程

    2)long getId():获取该线程的标识符

    3)String getName():获取该线程的名称

    4)int getPriority():获取该线程的优先级

    5)Thread.state getState():获取该线程的状态

    6)boolean isAlive()/isDaemon()/isInterupted():判断该线程是否处于活跃状态/守护线程/中断

    7)void setPriority(int priority):设置该线程的优先级,1-10,10级最高

    8)void setDaemon(boolean):设置守护线程(后台线程),当线程只剩下守护线程时,所有守护线程将强制终止

    9)static void sleep(long ms):使该线程进入阻塞状态指定毫秒,当经过指定毫秒后,线程进入Runnable状态

    10)void join():等待当前线程结束

    11)static void yield():使该线程让出时间片,进入Runnable状态

    12)wait、notify

6.多线程并发操作同一个数据时会发生并发安全问题,解决方法是,使用synchronized关键字,将异步变为同步,线程安全与非线程安全API(前面安全,后面不安全):

    1)StringBuffer与StringBuilder

    2)Vector与ArrayList

    3)Hashtable与HashMap

    4)获取线程安全集合的方式:

        -Collections.synchronizedList()

        -Collections.synchronizedMap()

7.若一个程序频繁的创建和销毁线程,会过度消耗资源,导致系统崩溃,为此可用线程池解决。线程池的作用有控制线程数量和重用线程。ExecutorService实现线程有以下方法:

    1)Executors.newCachedThreadPool():创建一个缓存线程池

    2)Executors.newFixedThreadPool(int nThreads):创建一个固定的线程池(3/4比例)

    3)Executors.newScheduledThreadPool(int corePoolSize):创建一个延迟线程池

    4)Executors.newSingleThreadExecutor():创建一个单个worker线程的线程池

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值