java線程基本知识小结.docVIP

  • 5
  • 0
  • 约9.54千字
  • 约 13页
  • 2016-12-06 发布于重庆
  • 举报
java線程基本知识小结

java线程基本知识小结 看了一阵子java线程方面的知识,《thinking in java 3rd》,《effective java 2nd》,感觉还是雾里看花,难以得其精髓。 多线程编程本来就是一门很玄奥的学问,不是看一些基础的语法知识就能真正掌握的。在实践中去揣摩,我想才是最好的方法。奈何我现在没有这样的条件,离论文开题的时间不远了,我还没有摸到头绪,真不知道是该坚持还是放弃。 扯远了,还是回到线程来吧,虽然不得要领,但还是要把一些基础的东西总结一下,一旦以后需要用到的时候,也可以方便地回顾。 1. 线程的创建 java中创建一个线程有两种方式: 1.1. 扩展Thread类,并重载run()方法 public?class?ThreadName?extends?Thread?{ ????public?void?run()?{ ????????//?do?something?here ????} } 1.2. 实现runnable接口,并调用Thread提供的构造函数 public?class?ThreadName?implements?Runnable?{ ????public?void?run()?{ ????????//?TODO?Auto-generated?method?stub ????} ???? ????public?void?main(String?args[])?{ ????????Thread?thread?=?new?Thread(new?ThreadName()); ????????thread.start(); ????} } ? 这两种方法各有利弊。简单来说,如果你确定当前的类就是作为一个单纯的线程来实现,不需要再继承其他任何类的时候,那么最好就用第一种方式,因为简单,而且可以直接就获得Thread所提供的各种方法,在类内部使用;反之,如果你需要继承其他类,或者将来可能会有这种需要,那么就用第二种方法。 第二种方法需要注意的地方是,当你实现了Runnable接口后,你仅仅是实现了该接口而已,你现在所有的只是一个run()方法,即使你生成一个对象来调用run()方法,和普通的方法调用也没什么两样,并不会创建一个新的线程。只有当你用Thread构造函数创建一个对象之后,这才是新创建了一个线程。 当你使用第二种方法的时候,可能你也想在类内部调用Thread所提供的一些方法,这时可以用Thread.currentThread()来获得当前线程的引用。 2. 线程的运行 当你获得一个线程实例thread后,使他开始运行的唯一方法就是thread.start(),由java虚拟机调用该线程的run方法。 注意不是调用run()方法来启动线程。当你调用run()方法时,如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。 另外要注意,多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。 3. 结束线程运行 就我目前所知,有两种结束线程的方法(我是指通过直接操作线程对象的合法方法)。 3.1. 在线程内部设置一个标记为volatile的标志位 public?class?StopThread?extends?Thread?{ ????public?volatile?boolean?stop?=?false; ???? ????private?static?int?i?=?0; ???? ????public?void?run()?{ ????????while(!stop)?{ ????????????i++; ????????} ???????? ????????System.out.println(i); ????} ????/**?*//** ?????*?@param?args ?????*/ ????public?static?void?main(String[]?args)?{ ????????StopThread?thread?=?new?StopThread(); ????????thread.start(); ???????? ????????try?{ ????????????sleep(2000); ????????}?catch?(InterruptedException?e)?{ ????????????//?TODO?Auto-generated?catch?block ????????????e.printStackTrace(); ????????} ???????? ????????thread.stop?=?true;

文档评论(0)

1亿VIP精品文档

相关文档