JAVA线程的创建与启动线程
1. 方式一:
/**
* Title: Demo1.java
* Description:线程的创建
* 步骤:
* 继承thread类
* 重写run()
* 启动线程
* @author sunt
* @created 2016年5月3日 下午3:04:47
*/
public class Demo1 extends Thread{
//成员变量
private String name;
private int age;
public Demo1(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public void run() {
for (int i = 0; i < 20; i++) {//循环输出name,age和线程的名称
System.out.println(i + "----->线程名称 = " + Thread.currentThread().getName() + ",姓名 = " + name + ",年龄 = " + age);
}
}
}
1. 测试代码:
/**
* Title: Demo1Test.java
* Description: 创建线程测试
* @author sunt
* @created 2016年5月3日 下午3:12:27
*/
public class Demo1Test {
public static void main(String[] args) {
/**
* 创建对象,初始化赋值,开启线程,调用run()
*/
Demo1 demo1 = new Demo1("张三", 18);
Demo1 demo2 = new Demo1("李四", 22);
demo1.start();
demo2.start();
demo1.run();
demo2.run();
}
}
- 方式二(常用):
/**
* Title: Demo2.java
* Description: 线程的创建:
* 实现:Runable接口(常用)
* @author sunt
* @created 2016年5月3日 下午3:19:51
*/
public class Demo2 implements Runnable{
@Override
public void run() {
//调用方法
print();
}
/**
* 定义一个方法
*/
public void print(){
for (int i = 0; i < 40; i++) {
System.out.println("线程的名称 = " + Thread.currentThread().getName() + "-----" + i);
}
}
}
测试类代码:
/**
* Title: Demo2Test.java
* Description: 测试线程类
* 将子类对象作为参数传递
* @author sunt
* @created 2016年5月3日 下午3:25:11
*/
public class Demo2Test {
public static void main(String[] args) {
Demo2 demo = new Demo2();
Thread thread1 = new Thread(demo);
Thread thread2 = new Thread(demo);
/**
* 开启线程
*/
thread1.start();
thread2.start();
}
}