一本Think in java,从去年6月份开始读,读了快一年了,也快读完了,然而回头想想,却好像什么也不记得了,好记性不如烂笔头,那就从现在开始记录一下吧。由于现在在读的是并发,那就先从这章开始吧。(由于是个人学习笔记,不是教程什么的,不会特别全面,如果有什么错误,还望大神指出)
一,线程的实现方式
1.实现Runnable接口
package com.pikzas.cocurrent; /** * Created by pikzas on 2017/5/22. */ public class LiftOff implements Runnable { protected int countDown = 10; private static int taskCount = 0; private final int id = taskCount++; public LiftOff(){} public LiftOff(int countDown){ this.countDown = countDown; } private String status(){ return "#" + id + "(" + (countDown > 0? countDown:"LiftOff!") + "),"; } public void run() { while(countDown-->0){ System.out.print(status()); Thread.yield(); } } public static void main(String[] args) { LiftOff liftOff = new LiftOff(); liftOff.run(); } }
2.继承Thread类
package com.pikzas.cocurrent; /** * Created by pikzas on 2017/5/22. */ public class LiftOffThread extends Thread { protected int countDown = 10; private static int taskCount = 0; private final int id = countDown++; public LiftOffThread(){ System.out.println("i am running!"); } public LiftOffThread(int countDown){ this.countDown = countDown; } public String status(){ return "*" + id + "(" + (countDown>0? countDown:"LiftOffAgain") + ")"; } public static void main(String[] args) throws InterruptedException { System.out.println("waiting for liftoff"); for (int i=0;i<5;i++){ Thread thread = new Thread(new LiftOffThread()); thread.start(); } } }
3.线程的启动
3.1. Thread thread = new Thread();
thread.run(); //会等待当前调用线程任务执行完成后在启动
thread.start(); //会立即启动执行
二,线程的管理--Executor