A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© BoysLove 初级黑马   /  2015-4-13 10:06  /  1298 人查看  /  20 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这是我去年看毕老师java基础部分的视频记的笔记,菜鸟笔记,难免有不足之处,还请各位大神指出!
多线程:
创建线程的目的:开启新路径让多部分代码实现同时执行;
创建多线程2中方法之一:继承Thread类:
1,创建一个类继承Thread类,
2,覆写run()
3,创建该类对象并调用start();

多线程调用run()和start()区别:
调用run()不开启线程,仅是对象调用方法;
调用start方法开启线程,并让jvm调用run()在开启的线程中执行;

继承Thread类的原理:
Thread类描述线程事物,具备线程应该有的功能;
那为什么不直接创建Thread类的实例来调用start()开启线程?那是因为Thread类的run()不做任何事情,更是因为run()没有我们定义给线程要执行的代码(线程任务)

之前所说的主线程的任务定义在main(),而我们自定义的线程需要执行的代码(线程任务)放在覆写的run();既然Thread类已经定义了线程任务的位置,那么我们只要在位置中定义任务代码即可;

创建线程2种方法之二:
1,定义一个类实现Runnable接口;
2,覆写run();
3,创建该类的实例对象;例如Demo d=new Demo();//注意线程类只有是Thread类或者他的子类,自己定义的类不是线程类;
4,创建Thread类的实例对象,并将该类作为参数传给Thread类的实例对象:Thread t=new Thread(d);
5,开启线程:利用线程类Thread调用自己的start():t.start();

多线程中的异常:相互之间的线程是独立的,假如有主线程main和自己定义的线程Thread-0;那么main结束了就退出,此时不会影响Thread-01,同理Thread-01也不会影响main线程,即使他俩有一个发生异常;

实现Runnable接口的原理:
既然可以继承Thread类覆写它的run()再new对象调用它的start()来执行run()中的任务代码,那么为何还要使用Runnable接口来是达到多线程并发访问的目的?
这是因为开发中不能保证你定义的类没有父类从而可以去继承父类Thread(java中单继承),故要实现Runnable

为什么要把Demo的实例对象d作为参数传给new Thread(d)呢?
因为JDK源码中Thread类是这样的:
class Thread
{
        private Runnable target;
        Thread(Runnable target)
        {
                this.target=target;       
        }
        void run()
        {
                if(target!=null)
                target.run();       
        }
        void start()
        {
                run();
        }
}
多线程安全问题产生的原因:
1,多个线程操作共享数据;
2,run()中运算代码有多部分,不止一部分;

java中解决多线程问题方法:使用同步代码块
synchronized(对象)
{
        //需要被同步的代码块;
}

同步好处:解决多线程安全问题;
同步弊端:降低了程序的性能;

同步的前提:
必须保证多个线程在同步中使用的是同一个锁;
解决了问题是当多线程安全问题发生时,加入同步后,问题依旧,就要通过这个同步的前提来判断同步是否写正确;



20 个回复

倒序浏览
整理的挺好的
回复 使用道具 举报

哥们现在学到哪儿了,你在黑马学习吗
回复 使用道具 举报
攒一个!!!
回复 使用道具 举报

菜鸟笔记,大神过奖了
回复 使用道具 举报
BoysLove 发表于 2015-4-14 16:13
菜鸟笔记,大神过奖了

我是菜菜鸟!
回复 使用道具 举报
整理的不错
回复 使用道具 举报
Grady 中级黑马 2015-4-14 22:55:57
8#
赞一个                             
回复 使用道具 举报
cyr 中级黑马 2015-4-15 08:27:08
9#
整理的不错,加油。
回复 使用道具 举报
顶你一下
回复 使用道具 举报
希望坚持整理
回复 使用道具 举报
不错,继续加油
回复 使用道具 举报
zdh 中级黑马 2015-4-15 10:04:57
13#
赞一个!
回复 使用道具 举报
我也在看 这个多线程
回复 使用道具 举报
写的好啊  
回复 使用道具 举报

谢谢,我是还在学习的菜鸟
回复 使用道具 举报
tream 中级黑马 2015-5-16 14:22:13
17#
不错,还没看到呢
回复 使用道具 举报
写的很好哦,你会成功的。
回复 使用道具 举报
大神啊。。。
回复 使用道具 举报
整理的不错~
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马