本文共 2258 字,大约阅读时间需要 7 分钟。
使用新线程的步骤:
run
方法,配置新线程需要做的事情new YourThread()
start
创建新线程的方法有很多,下面是一个示例:
class MyThread extends Thread { @Override public void run () { System.out.println("在新的线程内运行的任务。这任务是独立的,不会影响主线程代码执行。"); }}public class Main { public static void main (String... args) { Thread myThread = new MyThread(); // 创建线程 mythread.start(); // 运行线程 }}
也可以这样:
class MyThread implements Runnable { @Override public void run () { System.out.println("在新的线程内运行的任务。这任务是独立的,不会影响主线程代码执行。"); }}public class Main { public static void main (String... args) { Thread myThread = new Thread(new MyThread()); // 创建线程 mythread.start(); // 运行线程 }}
上面代码可以简写为:
// 使用匿名内部类进行简化public class Main { public static void main (String... args) { Thread myThread = new Thread () { @Override public void run () { System.out.println("在新的线程内运行的任务。这任务是独立的,不会影响主线程代码执行。"); } }; myThread.start(); }}
使用 jdk8 的语法,甚至可以简化为:
public class Main { public static void main (String... args) { new Thread(() -> System.out.println("task")).start(); }}
其他:
t.join()
让当前线程阻塞并等待线程 t 结束再执行接下来代码
Thread.sleep()
让当前线程暂时休眠 n 毫秒,这过程不会释放所占用的对象锁
Thread.yield()
暂时退让,优先让其他线程先运行。如果没有线程在这个过程中抢占运行权,则继续运行
Executors 是一个常用的静态类,内置了很多线程池相关的操作。
线程池使用的基本语法:
// 1. 创建线程池ExecutorService service = Executors.newCachedThreadPool();// 2. 创建任务Runnable task = new Runnable() { @Override public void run() { System.out.println(Thread.currentThread()); } };// 3. 使用线程池调度任务for (int i = 0; i < 1000; i++) { service.execute(task);}// 4. 关闭线程池service.shutdown();
可以简化为:
ExecutorService service = Executors.newCachedThreadPool();for (int i = 0; i < count; i++) { service.execute(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread()); } });}
可以进一步简化为(jdk8语法):
ExecutorService service = Executors.newCachedThreadPool();for (int i = 0; i < count; i++) { service.execute(() -> System.out.println(Thread.currentThread()));}
转载地址:http://wxhgn.baihongyu.com/