java多线程

1,并行并发有什么区别?

        ①并行是指两个或多个事件在同一时刻发生,而并发是指两个或多个事件在同一时间间隔发生

        ②并行没有对CPU资源的抢占;并发执行的线程需要对CPU资源进行抢占

2,sleep()和wait()有什么区别?

        ①sleep是Thread类的静态本地方法;wait是Object类的成员本地方法

        ②sleep方法可以在任何地方使用;wait方法则只能在同步代码块中使用。否则抛出异常

        ③sleep会休眠当前线程指定时间,释放CPU资源,但不释放对象锁;wait方法放弃持有的对象锁,进入等待队列

3,线程有哪些状态

        创建状态:在生成线程对象,并没有调用该对象的start方法,至就绪线程处于创建状态

        就绪状态:当调用了线程对象的start方法之后,该线程就进入了就绪状态

        运行状态:线程调度程序将处于就绪状态的线程设置为当前线程

        阻塞状态:线程正在运行的时候,被暂停

        死亡状态:如果一个线程的run方法执行结束或者调用stop方法后,该线程就会死亡

4,run()和start()有什么区别?

        start方法来启动一个线程,真正实现了多线程运行 ;run方法是在本线程里的,只是线程里的一个函数,而不是多线程。  

5,什么是死锁?

        死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象

6,synchronized和Lock有什么区别

        ①,实现层面不一样,synchronized是java关键字,JVM层面实现加锁和释放锁;Lock不会自动释放锁

        ②,synchronized在线程代码执行完或出现异常时自动释放锁,Lock你会自动释放锁

7,同步和异步有何不同,分别在什么情况下使用?

        同步:发送一个请求,等待返回,然后发送下一个请求

        异步:发送一个请求,不等待返回,随时可以再发送下一个请求

使用场景:

        ①,如果数据存在线程的共享,或竞态条件,需要同步。如多个线程同时对同一个变量进行读和写的操作

        ②,当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就可以使用异步,提高效率,加快程序的 响应。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员慕慕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值