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

原创 2012年03月23日 00:09:15

android培训java培训、期待与您交流! ----------------------Java Thread:是通过java.lang.thread

public class Thread
extends Object
implements Runnable

runnable

方法调用

线程启动

只要能使用thread接口就不要从Thread继承

线程状态:

节点流类型:

 

 

两种方式创建新的线程:

第一种:

定义线程类实现‘Runnable接口

Thread myThread = new Thread (target)//targetRunnable接口类型

Runnable中只有一个方法:

  public void run () // 定义线程运行体

使用Runnable接口可以为多个线程提供共享的数据

实现Runnable接口的类的run方法定义中可以使用Thread的静态方法

 Public static Thread currentThread()   获取当前线程的引用

 

第二种:

可以定义一个Thread的子类并重写其run方法

class MyThread extends Thread{

public void run (){

…………………

}

}

 然后生成该类的对象

MyThread mythread = new MyThread(….)

Main方法 run方法

对象的多态性

 thread类创建线程

1要将一段代码在一个新的线程上运行,该代码应该在一个类的run函数中,并且run函数所在的类是Thread类的子类。倒过来看,我们要实现多线程,必须编写一个继承了Thread类的子类,子类要覆盖thread中的run函数,. 在子类的 run函数中调用想在新线程上运行的程序代码

2启动一个新的线程,我们不是直接调用thread的子类对象的run方法,而是调用Thread子类对象的Start(从Thread类的继承到的)方法,thread类对象的start方法将产生一个新的线程,并再该线程上运行该Thread类对象的中的run方法。根据面向对象的运行时的多态性,在线程上实际运行的是thread子类(也就是我们写的那个类)对象中的run方法

3由于线程的代码在run方法中,那么方法执行完成以后线程也就相应的结束。因而我们可以通过控制run方法中循环的条件来控制线程的结束

 

 

runnable接口创建多个线程

 

适合多个相同程序代码的线程去处理同一资源的情况,把虚拟cpu(线程)同程序的代码,数据有效分离,较好的体现了面向对象的设计思想

 

可以避免由于java的单继承特性带来的局限。

当线程被构造时,需要的代码和数据通过一个对象作为构造函数实参传递进去,这个对象就是一个实现了Runnable接口的实例。

 事实上几乎所有多线程应用都可以用Runnable接口方式

synchronized()作用,原理

synchronized()后面必须加上一个对象

 某个方法后中加入Synchronized后,

多线程在实际中的应用

1:火车票售票系统的解析:

2:网络聊天程序的收发:

 

同步函数或同步代码块也可以实现同步

一个类的多个方法中加入synchronized

监视器,怎样建一个同步监视器

 

多线程同步的问题:

什么是线程安全,同步代码块,同步函数,代码和函数间的同步,死锁问题

 

线程间的通信:

wait告诉当前线程放弃监视器并进入睡眠状态直到其他线程进入同一个监视器调用notify为止。

 notify:唤醒同一对象监视器中调用wait的第一线程。用于类似饭馆有一个座位后,通知所有等候就餐的顾客中的第一位可以入坐的情况

notifyAll唤醒同一对象监视器中调用wait的所有线程,具有最高优先级的线程被唤醒并执行

 

线程生命的控制:android培训java培训、期待与您交流! ----------------------

黑马程序员_java多线程的一些总结(一)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、    进程和线程 1、   进程和线程的关系。 一般来说,我们运行一个应用程序的,就启动...
  • u011449569
  • u011449569
  • 2015年10月29日 00:23
  • 285

黑马程序员---多线程视频之经验浅谈

---------------------- Jsp.java+Android开发、Jsp.java+Android开发 、期待与您交流! ---------------------- 多线程的yo...
  • a431261
  • a431261
  • 2014年06月18日 22:16
  • 284

黑马程序员_我的Linux基础整理笔记

Linux Linux文件目录和分区 文件目录: /:根目录 /root:存放root用户的相关文件 /home:存放普通用户的相关文件 /bin:存放普通用户的可执行命令 /sbin:...
  • zhengzhongjie1990
  • zhengzhongjie1990
  • 2014年07月05日 17:08
  • 1520

黑马程序员学习笔记 Java的三大框架

如果做javaweb开发,spring是一定要学的,现在主流还是ssh,就是strurs+hibernate+spring,其中hibernate是持久层,用来持久化数据库操作的,如果不喜欢可以学点别...
  • Mr_April
  • Mr_April
  • 2015年07月03日 17:12
  • 1535

黑马程序员—黑马的学习环境没有亲身经历的人是很难体会的!!!

文章来源:黑马程序员,黑马论坛     公元2013年1月10号我拖着沉重的行李箱和对未来的憧憬来到了黑马,公元2013年6月7号我怀抱着满满的知识和对老师的不舍离开了黑马。到现在离开黑马也有一个...
  • heima_28
  • heima_28
  • 2014年08月26日 15:16
  • 1413

黑马程序员--Oracle学习_day06

----------  android培训 、java培训、期待与您交流! ---------- 学习目标:1,理解oracle的pl/sql的概念   2,掌握pl/sql编程技术(...
  • xpaibeyond
  • xpaibeyond
  • 2015年01月16日 14:28
  • 203

黑马程序员—怎么去黑马?吃住问题解答

文章来源:黑马程序员,黑马论坛
  • heima_25
  • heima_25
  • 2014年08月24日 13:24
  • 1142

黑马程序员--一个为进入黑马云六的C++屌丝的28个日夜

首先我要告诉大家,我是一个在大学学了三年C++的人,可能你们会问我,学C++不是挺好的?干嘛突然间要重新学习java呢?况且C++以后的发展不也挺好吗?        我应该怎么回答你们呢?这也是我...
  • heima_hb5
  • heima_hb5
  • 2014年08月22日 08:52
  • 2401

黑马程序员--一段给后者的面试总结

文章来源:黑马程序员, 北京之旅,行北京万事,通百姓生活。其实,我也是个农村出来的孩子,大学没毕业就来北京参加“黑马”,毕业之后,还是没有任何的机遇与机会让我能在那里一展雄威,这就是我们这些菜鸟的悲...
  • heima_hb6
  • heima_hb6
  • 2014年08月24日 13:51
  • 526

黑马程序员:Hibernate基础知识

android培训、java培训
  • u012159707
  • u012159707
  • 2013年09月26日 15:42
  • 585
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员----多线程
举报原因:
原因补充:

(最多只允许输入30个字)