黑马程序员----------------------多线程

来源:互联网 发布:雷石世纪软件 编辑:程序博客网 时间:2024/06/05 17:54

----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! --------------------

什么叫做进程?什么叫做线程?

答:我总结他就采取了两招“举例+画图”进程就是在内存在开辟了一块空间,放一个程序进去,线程就是这个程序中的一个任务,多线程就是一个程序中多个任务同时进行,然后又举例,打开一个360,点击系统优化,然后再点击电脑体检。清晰明了的说明白了!
实现多线程有几种方法?
两种:1、继承Thread类
1.重写父类的run方法,
2.把任务代码写在里面,
3.调用线程对象的start方法开启线程。
2、实现 Runable接口
1.覆盖接口中的run方法,将线程的代码封装到run方法中
2.通过Thread类创建线程对象,并将Runnable接口的子类对象作为Thread类的构造函数的参数传递。
为什么?因为线程的任务都封装在Runnable接口的子类对象的run方法中,所以要在线程对象创建时就必须明确要运行的任务。
3.调用线程对象的start方法开启线程。
4.实现Runnable接口的好处:
1、将线程的任务从线程的子类中分离出来,进行了单独的封装。按照面向对象的思想将任务的封装成对象
2.也是说有的接口的好处,避免了java单继承的局限性。

线程安全问题产生的原因:
1.对多个线程操作共享的数据
2.操作共享数据的线程代码有多条

当一个线程在执行操作共享数据的多条代码过程中,其他线程参与了运算就会导致线程安全问题的产生。

同步的好处:
解决线程安全的方法:就是同步代码块synchronized(对象){}

同步的弊端:相对以前降低了执行效率

同步的前提:必须所有的对象使用一个锁

同步函数使用的锁是this;
同步函数和同步代码块的区别:
1、同步代码块的锁是任意的对象。
2、建议使用同步代码块

静态的同步函数使用的锁是 该函数所属的字节码文件对象 可以用getClass 方法获取,也可以用当前 类名.class 表示

----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! --------------------

0 0
原创粉丝点击