黑马程序员技术交流社区

标题: java基础部分之多线程部分笔记 [打印本页]

作者: BoysLove    时间: 2015-4-13 10:06
标题: java基础部分之多线程部分笔记
这是我去年看毕老师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(对象)
{
        //需要被同步的代码块;
}

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

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




作者: 黑马小符    时间: 2015-4-13 10:46
整理的挺好的
作者: BoysLove    时间: 2015-4-13 10:48
黑马小符 发表于 2015-4-13 10:46
整理的挺好的

哥们现在学到哪儿了,你在黑马学习吗
作者: silencelj    时间: 2015-4-13 10:59
攒一个!!!
作者: BoysLove    时间: 2015-4-14 16:13
silencelj 发表于 2015-4-13 10:59
攒一个!!!

菜鸟笔记,大神过奖了
作者: silencelj    时间: 2015-4-14 17:11
BoysLove 发表于 2015-4-14 16:13
菜鸟笔记,大神过奖了

我是菜菜鸟!
作者: 燕赵之风    时间: 2015-4-14 17:18
整理的不错
作者: Grady    时间: 2015-4-14 22:55
赞一个                             
作者: cyr    时间: 2015-4-15 08:27
整理的不错,加油。
作者: SeventhMoon    时间: 2015-4-15 08:35
顶你一下
作者: Nick_KJ    时间: 2015-4-15 08:36
希望坚持整理
作者: 懒的呼吸    时间: 2015-4-15 08:37
不错,继续加油
作者: zdh    时间: 2015-4-15 10:04
赞一个!
作者: adalvik    时间: 2015-4-15 11:13
我也在看 这个多线程
作者: 和鹏    时间: 2015-4-15 11:32
写的好啊  
作者: BoysLove    时间: 2015-5-16 09:50
燕赵之风 发表于 2015-4-14 17:18
整理的不错

谢谢,我是还在学习的菜鸟
作者: tream    时间: 2015-5-16 14:22
不错,还没看到呢
作者: 奋斗的小琴年    时间: 2015-5-16 14:38
写的很好哦,你会成功的。
作者: 陈明佳    时间: 2015-5-16 23:12
大神啊。。。
作者: richaled    时间: 2015-5-17 09:37
整理的不错~
作者: 懒儿想想    时间: 2015-5-17 20:54
赶紧记我小本本上




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2