并发编程哪些事

多线程涉及内容较多,相对来说较为复杂,但是越是这样的知识,就需要归纳总结,这样才能深刻的理解并成为自己的知识,下面我对多线程已问题的方式进行总结:

1,多线程到底有什么用:

     ①,多大程度的发挥多cpu优势,我们知道一个时间点一个cpu只能运行一个线程,如果是单线程这样就浪费了多核cpu的优势。

     ②,防止阻塞,因为cpu是抢占式运行,当线程阻塞时,可以切换到其它线程进行运行。

     ③,便于建模,可以将一个复杂的任务分解成多个子任务单独运行,提高了运行速度,降低了任务的复杂性。

2,创建线程的方式和方法有哪些?

     ①,有继承Thread类和实现Runnable接口两种方式,实现Runnable接口方式优于继承Thread类的方式,因为这样可以降低程序之间的耦合度,符合程序设计的六大原则之一。

     ②,有start()和run()两种方法,前者测试真正实现了多线程,而后则是thread类的一个方法,只会按顺序进行执行。

3,volatile关键字作用?

  volatile关键字作用是保证多线程的可见性和原子性,volatile修饰的关键字在多线程间可见,并保证该数据为最新原则,同时也降低了线程的运行效率,因为阻止了jvm运行效率最大化对线程进行重排,同时volatile和CAS结合保证线程的原子性。

4,什么是线程安全:
   个人理解,在多线程和单线程下,运行结果相同,我们就任务线程是安全的!

   例如:string  integer long 都是用final修饰的为线程安全的,ArrayList  HashMap 都是非线程安全的类,在编程中需要注意!

5,为什么使用线程池

    目的无非就是避免重复创建和销毁线程带来的内存开销,达到线程对象的重用,使用线程是可以根据项目特点灵活的控制线程并发数。

5,如何获取线程dump信息?

    线程出现死循环、死锁、阻塞、访问慢的问题都可以通过dump信息进行分析查看,常用获取dump信息的方式,首先获取线程pid信息,可以用ps -ef|grep pid进行查看,打印dump信息,可以通过kill -3 pid进行打印或者stack pid

6,liunx下如何查看哪个线程占用cpu时间最长

  获取当前进程的pid,通过top -H -p pid 或者 top -H -p '' jps pid"就能看出占用当前cpu时间最长的线程,前者是十进制,后者是十六进制

 

转载于:https://www.cnblogs.com/mingna/p/9301778.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值