【java】线程与进程

线程与进程的概念

1、进程:指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,-一个运行的exe就是一个进程。

2、线程:指进程中的一一个执行流程,一个进程中可以运行多个线程。比如java.exe进程中可以运行很多线程。
3、线程总是属于某个进程,进程中的多个线程共享进程的内存。进程中被启动的第一个线程被称为主线程,随后启动的线程都是子线程。

创建线程

1、创建线程类一

创建类继承thread类

重写run()方法

启动线程

  • 执行线程类对象的实例化方法start()启动线程
  • 启动线程后,会运行线程类中的方法run(),该方法会运行在子线程中

2、创建线程类二

创建类实现Runnable接口

实现run()方法

启动线程

  • 创建自定义类对象
  • 创建Thread对象(将自定义类对象作为参数传入)
  • 调用Thread对象的实例方法start()

两种创建线程方式的比较

●使用继承Thread的方法创建

优点:编码简单
缺点:扩展性较差,如果一个类继承了Thread类,那么他就无法再继承其他类了。

●使用实现Runnable接口的方式创建

优点:不论你的类是否有继承其他类或者实现其他接口,都可以实现Runnable接口。扩展性较好。
缺点:代码稍微复杂

线程休眠

●Thread.sleep(静态方法强制当前正在执行的线程休眠(暂停执行), 以“减慢线程”。
●线程睡眠的原因:线程执行太快,或者需要强制进入下一-轮。 释放CPU资源,让其他线程有更多的机会执行。

线程同步

线程同步的必要性

当多个线程操作同一个变量,造成该变量的未知性

使用synchronized关键字可以实现线程间的同步。
synchronized可以同步
实例方法
类方法
代码块

同步实例方法

使用synchronized修饰实例方法
语法:synchronized <返回类型> <函数名>()
使用synchronized修 饰实例方法的效果
同一个对象的该实例方法,在同一时刻只能被一个线程执行。
只对同一个对象调用一个方法时生效

同步类方法

使用synchronized修 饰类方法
语法:static synchronized <返回类型> <函数名>()
使用synchronized修饰类方法的效果该类方法,在同一时刻只能被一个线程执行

同步代码块

可以让一个方法中部分代码被同步,多个线程不能同时访问代码块,会阻塞等待。
语法:synchronized (Object的对象){代码块}
使用同一一个对象访问该代码块时,同步才生效

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值