1、继承Thread
/**
* Copyright (C), 2018-2018,
* FileName: MyThread
* Author: 大象
* Date: 2018-06-08 22:30
*/
package com.daxiang.demo.thread;
/**
* 〈〉<br>
*
* @author daxiang
* @create 2018-06-08
* @since 1.0.0
*/
public class MyThread extends Thread{
@Override
public void run() {
super.run();
System.out.println("this is thread");
}
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
System.out.println("线程结束");
}
}
2、实现Runnable接口
由于java规定只能单继承,所以为了满足多线程要求可以继承Runnable接口
/**
* Copyright (C), 2018-2018,
* FileName: MyThreadByRunnable
* Author: 大象
* Date: 2018-06-08 22:33
*/
package com.daxiang.demo.thread;
/**
* 〈〉<br>
*
* @author daxiang
* @create 2018-06-08
* @since 1.0.0
*/
public class MyThreadByRunnable implements Runnable{
@Override
public void run() {
System.out.println("线程运行中");
}
public static void main(String[] args) {
MyThreadByRunnable myThreadByRunnable = new MyThreadByRunnable();
Thread thread = new Thread(myThreadByRunnable,"线程1");
thread.start();
System.out.println("运行结束");
}
}
3、线程运行的随机性
/**
* Copyright (C), 2018-2018,
* FileName: MyThreadByRandom
* Author: 大象
* Date: 2018-06-09 7:00
*/
package com.daxiang.demo.thread;
/**
* 〈〉<br>
*
* @author daxiang
* @create 2018-06-09
* @since 1.0.0
*/
public class MyThreadByRandom extends Thread {
@Override
public void run() {
System.out.println("run thread:" + Thread.currentThread().getName());
for (int j = 0; j < 10; j++) {
int time = (int) Math.random() * 1000;
try {
Thread.sleep(time);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("run:" + Thread.currentThread().getName());
}
}
public static void main(String[] args) {
MyThreadByRandom thread = new MyThreadByRandom();
thread.setName("线程");
thread.start();
for (int i = 0; i < 10; i++) {
int time = (int) Math.random() * 1000;
try {
Thread.sleep(time);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("run:" + Thread.currentThread().getName());
}
}
}