Java线程:创建与启动

发表于:2015-5-08 10:12

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:大树0313    来源:51Testing软件测试网采编

  SCJP5学习笔记
  一、定义线程
  1、扩展java.lang.Thread类。
  此类中有个run()方法,应该注意其用法:
  public void run()
  如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。
  Thread 的子类应该重写该方法。
  2、实现java.lang.Runnable接口。
  void run()
  使用实现接口 Runnable 的对象创建一个线程时,启动该线程将导致在独立执行的线程中调用对象的 run 方法。
  方法 run 的常规协定是,它可能执行任何所需的操作。
  二、实例化线程
  1、如果是扩展java.lang.Thread类的线程,则直接new即可。
  2、如果是实现了java.lang.Runnable接口的类,则用Thread的构造方法:
  Thread(Runnable target)
  Thread(Runnable target, String name)
  Thread(ThreadGroup group, Runnable target)
  Thread(ThreadGroup group, Runnable target, String name)
  Thread(ThreadGroup group, Runnable target, String name, long stackSize)
  三、启动线程
  在线程的Thread对象上调用start()方法,而不是run()或者别的方法。
  在调用start()方法之前:线程处于新状态中,新状态指有一个Thread对象,但还没有一个真正的线程。
  在调用start()方法之后:发生了一系列复杂的事情
  启动新的执行线程(具有新的调用栈);
  该线程从新状态转移到可运行状态;
  当该线程获得机会执行时,其目标run()方法将运行。
  注意:对Java来说,run()方法没有任何特别之处。像main()方法一样,它只是新线程知道调用的方法名称(和签名)。因此,在Runnable上或者Thread上调用run方法是合法的。但并不启动新的线程。
  四、例子
  1、实现Runnable接口的多线程例子
package com.dashu.thread;
public class DoSomething implements Runnable {
private String name;
public DoSomething(String name) {
this.name = name;
}
public void run() {
// TODO Auto-generated method stub
for (int i = 0; i < 10; i++) {
for (long k = 0; k < 100000000; k++)
;
System.out.println(name + ": " + i);
}
}
}
package com.dashu.thread;
public class TestThread {
public static void main(String[] args) {
DoSomething do1 = new DoSomething("乌龟");
DoSomething do2 = new DoSomething("王八");
Thread t1 = new Thread(do1);
Thread t2 = new Thread(do2);
t1.start();
t2.start();
}
}
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号