并发编程入门(一)
为什么要并发?
提升资源利用率,提高程序运行速度。
Java 的内存模型:
工作内存:私有 每个线程分配独立的内存,互不干扰
主内存:所有进程共享
Thread 类 [implements Runnable]
创建线程的三种方式:
-
继承 Thread 类,重写 run 方法,实例.start 执行
public class ThreadExtendTest extends Thread{ @Override public void run(){ System.out.println("thread success"); } public static void main(String []args){ new ThreadExtendTest().start(); } }
-
实现 Runnable 接口,重写 run 方法,Thread 实例.start 执行
public class ThreadExtendTest implements Runnable{ @Override public void run(){ System.out.println("thread success"); } public static void main(String []args){ new Thread(new ThreadExtendTest()).start(); }
-
实现 Callable 接口,重写 call 方法,创建 FutureTask 获取返回值。
public class ThreadCallableTest implements Callable<String>{ @Override public String call(){ return "you are right"; } public static void main(String[] args) throws ExecutionException, InterruptedException { FutureTask<String> futureTask = new FutureTask<>(new ThreadCallableTest()); Thread thread = new Thread(futureTask); thread.start(); System.out.println(futureTask.get()); } }
匿名内部类 实现Runnable接口的简易版
public class Test { public static void main(String[] args) { Thread t = new Thread(new Runnable() { @Override public void run() { System.out.println("you area success"); } }); t.start(); } }
Thread 的方法
run() //具体执行的操作 start() //执行 run() 方法 sleep() //休眠 n 毫秒 getName() //获取线程名 setName() //修改线程名