[多线程.ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[多线程

Java多线程 进程和线程引入 进程一般是对操作系统而言的。例如,你打开word编辑文档,同时打开outlook收取邮件。我们可以说这时系统内有两个进程在运行。即多个程序几乎在同一时间执行多个任务。 线程一般是对某一程序而言的。如上例,你打开outlook收新邮件的同时,还可以看已下载的邮件,这两件事没有相互干扰,那么我们说此时这一程序中至少有两个线程在运行。即每一个程序似乎在同一时间内执行多个任务。 进程和线程的差别 这是学习线程必须搞清楚的问题。 这是一个所有的java技术面试都会问的问题: Hi,请您谈谈进程和线程有什么区别? 为什么要多线程 1、浏览器必须可以同时下载多个图像和网页。 2、Outlook必须让我一边下载新邮件,一边可以看已下载的邮件。 3、我要用网络蚂蚁或者BT工具下载软件 4、我们的Web服务器必须用多线程支持 如果没有线程 一个浏览器中想一边下载图片,一边下载歌曲,但是下载图片需要很长时间,而且出现停滞状态,这时会发生什么? 银行转账系统从A帐户向B帐户转账,A帐户减一百同时B帐户加一百,如果A帐户转账出现问题,B帐户能及时停止吗? 创建线程的方式 Java 有两种方式可以使应用程序员比较容易地实现多线程编程。 继承Thread类 实现Runnable接口 Java.lang.Thread static void sleep(long millis)  睡眠规定的毫秒数 void run() 必须覆盖,添加想要的代码 void start()  启动线程,将导致run()被调用。  该方法将立即返回,新线程将并行运行。 继承Thread类创建线程的步骤 1、继承Thread 2、覆盖Thread的run()方法,将你要让线程做的事写在run方法中。有时候可以需要用循环,使你的代码一直执行下去。 3、New 这个Thead子类,得到一个对象 4、调用这个对象的start()方法。 5、线程被启动,开始执行run()中的代码。 例子 public class Timer extends Thread //定时类Timer继承Thread类 { int time=0; //定时变量初始化值为0秒 public Timer(int time) // Timer类构造方法,构造方法的参数为需要定时的时间(单位为 //秒)。 { this.time=time; } public void run() //Timer重写父类Thread 的方法run(),这是该线程运行的程序段 { try {for(int i=0;itime;i++ ) { Thread.sleep(1000); //线程睡眠1秒,这期间它不执行,好象停止在这里一样 System.out.println(i); //屏幕显示i值,i表示时间间隔数,这里表示秒数 } } catch(Exception e) //捕获异常 { System.out.println(e.toString()); //异常处理,屏幕显示异常信息 } } 例子 public static void main(String args[]) { //主线程对应的运行程序 Timer timer=new Timer(10); //构造Timer的对象timer,设置定时10秒 timer.start(); //启动线程timer运行 } } 这个例子实现一个定时线程,即线程在给定期间每隔一定时间(1秒),屏幕显示时间累计数(秒数),时间结束时线程自动停止、撤消。 例子 public class Timer implements Runnable { int time=0; public Timer(int time) { this.time=time; } public void run() //Timer必须要实现接口run() { try { for(int i=0;itime;i++) //循环睡眠 { Thread.sleep(1000); //睡眠1秒 System.out.println(“i=”+i); } } catch(Exception e) { System.out.println(e.toString()); } } 例子 public static

文档评论(0)

1974wangpeng + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档