验证中...
本周日(5月27日)码云企业技术分享会【微服务】专场将与你相约上海。阿里、华为、ThoughtWorks的技术大咖齐聚,等你来撩!
片段 1 片段 2 片段 3 片段 4
第一种继承Thread类,重写run方法
原始数据 复制代码
//继承Thread类
class MyThread extends Thread{
SimpleDateFormat sdf =new SimpleDateFormat("yyyy年Mm月dd日 HH:mm:ss");
@Override
public void run() {
while(true){
String str = sdf.format(new Date());
System.out.println(str);
try {
Thread.sleep(1000); //当前线程
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
//1)启动接口实现方式的线程
Thread t =new Thread(new MyTask());
t.setName("A线程");
t.start();
//2)启动继承方式的线程
MyThread t2 =new MyThread();
t2.setName("B线程");
t2.start();
}
第二种实现Runnable 接口
原始数据 复制代码
//创建一个线程任务
class MyTask implements Runnable{
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//run方法是线程运行时候,调用的方法 ,run方法结束之后,线程通常就终止了 或者死亡了
@Override
public void run() {
while(true){
String str = sdf.format(new Date());
System.out.println(Thread.currentThread().getName()+":"+str);
try {
Thread.sleep(1000); //当前线程
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
第三种创建带有返回值的线程
原始数据 复制代码
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
public class Test4 {
/**
* 创建带有返回值的线程方式
* @param args
*/
public static void main(String[] args) {
FutureTask<Integer> ft = new FutureTask<Integer>(new MyTask());
Thread t =new Thread(ft);
t.start();
try {
Integer i =ft.get(); //get方法获取任务的返回结果
System.out.println(i);
} catch (Exception e) {
}
}
}
//定义一个带有返回值的任务
class MyTask implements Callable<Integer>{
@Override
public Integer call() throws Exception {
int i =0;
while(i<1000){
i++;
}
return i;
}
}
第四种使用线程池来创建线程
原始数据 复制代码
public class Test {
public static void main(String[] args) {
//创建一个固定数量的线程池
ExecutorService executorService = Executors.newFixedThreadPool(5);
executorService.submit(new MyTask() ); //线程池Random 随机()拿出来一个 线程 供调用
executorService.shutdown(); //关闭这个线程池
ExecutorService executorService2 = Executors.newSingleThreadExecutor() ; //创建一个单个线程的(池) 执行器
executorService2.submit( new MyTask());
executorService2.shutdown(); //服务器停止的时候,采取关闭线程池
}
}
class MyTask implements Runnable{
@Override
public void run() {
while(true){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(new Date());
}
}
}

评论列表( 0 )

你可以在登录后,发表评论

9_float_left_people 9_float_left_close