多线程杂谈

线程与进程

进程

是指一个内存中运行的应用程序,每一个进程都有一个独立的内存空间

线程

  • 是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换,并发执行,一个进程至少有一个线程
  • 线程是进程的进一步划分,进程启动后的若干执行路径又可划分为若干个线程

线程调度

分时调度

所有线程轮流使用CPU的使用权,平均给配每个线程占用CPU的时间

抢占式调度(Java)

  • 优先让优先级高的线程使用(CPU),相同时随机
  • CPU在多个线程中高速切换,对于CPU一个核一个时刻只能执行一个线程,一位内切换速度和处理时间相对人的感觉而言相对要快,看上去是同时执行的。
  • 对于单核CPU多线程并不能提高程序的运行速度,但能够提高程序的运行效率(IO与运算),让CPU使用率更高。

同步与异步

  • 同步:排队执行,效率低但安全
  • 异步:同时执行,效率高但是数据不安全

并发与并行

  • 并发:两个或多个事件在同一个时间段同时发生
  • 并行:在同一时刻同时执行

继承Thread

run():线程要执行的任务方法

  • 一条新的执行路径
  • run()不是通过调用触发,而是通过,Thread 的start()方法启动

方法

  • Thread()
  • Thread(String name)
  • Thread(Target Ruannable,String name)
  • 停止通知:
    编程的时候进行设置 stop 停止标识变量,当stop为true时,线程停止
  • sleep(long millis,int nanos):休眠,程序停止一段时间
  • setDaemon(boolean on):将程序标记为用户线程的守护线程

实例

定义一个 Thread 子类

public class Demo extends Thread { 
    @Override    
    public void run() {
    for (int i = 0; i < 10; i++) { 
        System.out.println("疑是地上霜"+i);       
        }    
    }}

  • 在main函数中调用
public class MyTest {
    public static void main(String[] args) { 
        Demo myThread = new Demo();        
        myThread.start();        
        for (int i = 0; i < 10; i++) {            
            System.out.println("窗前明月光"+i);        
            }   
        }}

  • 执行结果
窗前明月光0
疑是地上霜0
窗前明月光1
疑是地上霜1
窗前明月光2
疑是地上霜2
窗前明月光3
疑是地上霜3
窗前明月光4
疑是地上霜4
窗前明月光5
疑是地上霜5
窗前明月光6
窗前明月光7
疑是地上霜6
窗前明月光8
疑是地上霜7
窗前明月光9
疑是地上霜8
疑是地上霜9

Process finished with exit code 0

  • 两个线程执行情况:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Eh3kncbl-1626424428583)(en-resource://database/1129:1)]

  • 每个线程都有自己的一个栈空间(调用方法),但共用一个堆内存(储存数据)

  • 匿名内部类继承Thread 可以直接实现线程

new Thread(){   
    @Override  
    public void run() {  
        for (int i = 0; i < 10; i++) {  
            System.out.println("疑是地上霜"+i); 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值