java-多线程-基本概念/四种种创建thread的方式
来源:互联网 发布:imdb评分靠谱吗 知乎 编辑:程序博客网 时间:2024/05/20 04:30
程序:是一段静态的代码;
进程:处于运行过程的程序,是动态的,是独立存在的,拥有自己的资源,自己的私有地址;多个进程可以在单个cpu上并发执行;
(并发性:同一时刻,只能有一条指令执行,在cpu快速切换的情况下看起来像同时执行;并行性:同一时刻多条指令在多个cpu上同时执行;)
线程:程序的一条执行路径;一个进程可以有多个线程;
因为硬件和操作系统的不同而采用不同的策略:共用的多任务操作策略;抢占式多任务操作策略(大多数采用这种,效率高);
三种线程的创建方式:
1. 继承Thread类:
需要注意的是,用继承thread的方法创建线程,多个线程之间无法共享线程类的实例变量;
public class threadtest extends Thread{@Overridepublic void run() {//1.首先重写run方法,这里就是线程执行体;该线程要执行的代码}public static void main(String[] args) {// TODO Auto-generated method stub//2.创建该类-这里是theradtest的子类threadtest testthread = new threadtest();//3.调用.start()方法启动该线程;testthread.start();}}
2.实现Runnable接口:
相对于上一种方法,没有单继承的局限性,可以多实现;而且多个线程可以共同操作共有的资源;
//1.创建一个实现了Runnable接口的类;public class threadtest implements Runnable{@Overridepublic void run() {//2.还是要重写run方法,这里就是线程执行体;该线程要执行的代码System.out.println(Thread.currentThread().getName());}public static void main(String[] args) {// TODO Auto-generated method stub//3.创建该类的实例;threadtest testthread = new threadtest();//4.把这个实例作为参数传入Thread的构造方法;new一个Thread类,这个类就是创建出来的线程类;Thread imtest = new Thread(testthread);//5.启动线程,还是必须调用start方法;imtest.start();}}
3.使用Callable和Future 创建线程 :
这个方法还没用过。 不太懂。
import java.util.concurrent.Callable;import java.util.concurrent.FutureTask;//1.先实现一个Callable接口;public class Threadtest1 implements Callable<Integer>{public static void main(String[] args) {// TODO Auto-generated method stub//3.创建一个实现了Callable接口的类Threadtest1 threadtest1 = new Threadtest1();//4.用Future包装这个类FutureTask<Integer> task = new FutureTask<>(threadtest1);//5.包装之后的类作为参数传入Thread的构造函数Thread thread1 = new Thread(task);//6.调用start方法;thread1.start();}//2.重写call方法@Overridepublic Integer call() throws Exception {// TODO Auto-generated method stub//这里相当于Thread的run方法,线程执行体System.out.println(Thread.currentThread().getName());return null;}}
4.匿名方式:
public class Createway3 {public static void main(String[] args) {// TODO Auto-generated method stubThread test1 = new Thread(){public void run() {System.out.println("匿名类1"); for (int i = 0; i < 1000; i++) {System.out.println("匿名类1:"+i);}}};Thread test2 = new Thread(){public void run() {System.out.println("匿名类2"); for (int i = 0; i < 1000; i++) {System.out.println("匿名类2:"+i);}}};test1.start();test2.start();}}
0 0
- java-多线程-基本概念/四种种创建thread的方式
- Java创建多线程的三种方式---Thread
- **JAVA** Thread系列四 多线程的应用
- Java多线程四种创建方式
- Map集合的四种种遍历方式
- jquery预加载的四种种方式
- Java 多线程的创建 ---继承Thread类
- Java Thread创建方式
- java 多线程(一)---创建线程的三种方式Thread,Runnable,Callable与Future
- java--(多线程创建的两种方式Thread类和Runnable接口)
- 多线程创建的四种方式
- java多线程的创建方式
- Java多线程创建的方式
- java多线程的创建方式
- 三种创建多线程的方式(Thread,Runnalbe,callable)
- JAVA学习第二十二课(多线程(二))- (多线程的创建方式一 :继承Thread类)
- java多线程创建Thread方法
- java多线程学习 (四) Thread的interrupt()[中断] {转载}
- 【PMP】PMBOK计算题总结
- input输入框清除插件,极好用!
- Android中proguard混淆第三方jar包
- C#语法和深入string类
- 贪心算法--寻找最大数(一)
- java-多线程-基本概念/四种种创建thread的方式
- custom font设置打样
- 【最小生成树】POJ 2395 Out of Hay
- 什么情况下用+运算符进行字符串连接比调用StringBuffer/StringBuilder对象的append方法连接字符串性能更好?
- 哈希加密算法 MD5,SHA-1,SHA-2,SHA-256,SHA-512,SHA-3,RIPEMD-160
- android--利用SlidingPaneLayout实现简单的侧滑功能
- 2017 自考近代史 最后两道大题
- 综合使用spring cloud技术实现微服务应用
- html之marquee详解