标签:his 操作系统。 严格 资源 read 开发 cal ice 还需
Java多线程实现方式主要有四种:继承Thread类、实现Runnable接口、实现Callable接口通过FutureTask包装器来创建Thread线程、使用ExecutorService、Callable、Future实现有返回结果的多线程。
其中前两种方式线程执行完后都没有返回值,后两种是带返回值的。
方式一:继承Thread类
重写run()方法,调用start()方法执行。
需要注意的是:为什么多线程的启动不是调用run()方法,而是调用start()方法?
在Java开发中有一门JNI(Java Native Interface)技术,这门技术的特点,使用Java调用本机操作系统的函数,但是这个技术不能离开特定的操作系统。
如果线程想要执行,需要操作系统分配资源。所以此操作严格来讲需要JVM根据不同的操作系统来实现的。
start()方法中,使用了native关键字修饰了方法,而native关键字时根据不同的操作系统分配不同的资源。
start()方法,不仅仅要启动多线程执行的代码,还需要根据不同的操作系统来分配资源
1 package test; 2 3 public class MyThread { 4 public static void main(String[] args) { 5 Test t1 = new Test("one"); 6 Test t2 = new Test("two"); 7 Test t3 = new Test("three"); 8 /** 9 * 调用Thread类中的start方法,才能进行多线程的操作,而不是run方法 10 * start()方法不仅仅启动多线程代码的执行,还需要根据不同的操作系统分配资源 11 */ 12 try {//调用Thread类中的sleep方法,让线程等待指定的一段时间 13 Thread.sleep(1000); 14 } catch (InterruptedException e) { 15 e.printStackTrace(); 16 } 17 t1.start(); 18 t2.start(); 19 t3.start(); 20 } 21 } 22 23 /** 24 * 继承线程类Thread,重写run()方法,在run方法中实现需要进行的数据操作 25 * @author Administrator 26 * 27 */ 28 class Test extends Thread{ 29 30 private String name; 31 32 public Test(String name) { 33 this.name=name; 34 } 35 @Override 36 public void run() {//需要进行多进程的操作 37 for (int i = 0; i < 100; i++) { 38 System.out.println(name+"===>"+i); 39 } 40 } 41 }
方式二:实现Runnable接口
实现run方法,将Runnable对象作为参数放入到Thread构造方法中,在调用start()方法。
1 package test; 2 /** 3 * 测试Runnable接口 4 * @author Administrator 5 * 6 */ 7 public class MyRunnable { 8 public static void main(String[] args) { 9 Demo mr1 = new Demo("A"); 10 Demo mr2 = new Demo("B"); 11 Demo mr3 = new Demo("C"); 12 //将该对象作为参数,传入到Thread类中,在调用start()方法。 13 new Thread(mr1).start(); 14 new Thread(mr2).start(); 15 new Thread(mr3).start(); 16 } 17 } 18 19 /** 20 * 实现Runnable接口,实现多线程 21 * @author Administrator 22 * 23 */ 24 class Demo implements Runnable { 25 26 private String name; 27 28 public Demo(String name) { 29 this.name = name; 30 } 31 32 @Override 33 public void run() { 34 for (int i = 0; i < 300; i++) { 35 System.out.println(name + "==>" + i); 36 } 37 } 38 39 }
方式三:实现Callable接口通过FutureTask包装器来创建Thread线程
待续。。。
方式四:使用ExecutorService、Callable、Future实现有返回结果的线程
待续。。。
标签:his 操作系统。 严格 资源 read 开发 cal ice 还需
原文地址:https://www.cnblogs.com/in-the-game-of-thrones/p/11216125.html