进程与线程区别、多线程、run()与start()的区别、wait()和sleep()的区别、

一. 线程与进程的区别:

  • 1.线程(Thread)与进程(Process)
    进程定义的是应用程序与应用程序之间的边界,通常来说一个进程就代表一个与之对应的应用程序。
    不同的进程之间不能共享代码和数据空间,而同一进程的不同线程可以共享代码和数据空间。
    进程是资源分配的最小单位,线程是CPU调度的最小单位。
  • 2.一个进程可以包括若干个线程,同时创建多个线程来完成某项任务,便是多线程

多进程的应用
比如你可以边听mp3边上网,与此同时甚至可以将下载的文档打印出来,而这些任务之间丝毫不会相互干扰。

二. run()与start()的区别

  • t.run(); 只是调用了一个普通方法,并没有启动另一个线程,程序还是会按照顺序执行相应的代码。
  • t.start(); 则表示,重新开启一个线程,不必等待其他线程运行完,只要得到cup就可以运行该线程,是真正实现了多线程运行。

三. wait方法和sleep方法的区别

先了解一下线程的各个状态
在这里插入图片描述
wait

  • 等待队列(释放资源)—>调用notify或者notifyall之后锁池状态—>( 等待锁释放)—>可运行状态—>运行状态---->访问代码
  • wait()、notify()和notifyAll()都是Object的方法
  • wait()方法则只能在同步方法或同步块中使用;

sleep,join

  • 不释放资源–>结束后直接进入可运行状态—>运行状态---->访问代码
  • sleep()、yield()是Thread类的静态方法
  • sleep()方法可以在任何地方使用

Thread.yield()方法:

  • 暂停当前正在执行的线程对象,使当前线程从执行状态(运行状态)变为可执行态(就绪状态)。

其他线程的知识
Java多线程实现的四种方式、线程的生命周期

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值