JAVA多线程编程详解-详细操作例子
22页1、一、理解多线程 多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。 具体到java内存模型,由于Java被设计为跨平台的语言,在内存管理上,显然也要有一个统一的模型。系统存在一个主内存(Main Memory), Java中所有变量都储存在主存中,对于所有线程都是共享的。每条线程都有自己的工作内存(Working Memory),工作内存中保存的是主存中某些变量的拷贝,线程对所有变量的操作都是在工作内存中进行,线程之间无法相互直接访问,变量传递均需要通过主存完成。 多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的“同时”。如果系统只有一个CPU,那么真正的“同时”是不可能的。多线程和传统的单线程在程序设计上最大的区别在于,由于各个线程的控制流彼此独立,使得各个线程之间的代码是乱序执行的,将会带来线程调度,同步等问题。二、在Java中实现多线
2、程 我们不妨设想,为了创建一个新的线程,我们需要做些什么?很显然,我们必须指明这个线程所要执行的代码,而这就是在Java中实现多线程我们所需要做的一切! 作为一个完全面向对象的语言,Java提供了类 java.lang.Thread 来方便多线程编程,这个类提供了大量的方法来方便我们控制自己的各个线程。 那么如何提供给 Java 我们要线程执行的代码呢?让我们来看一看 Thread 类。Thread 类最重要的方法是 run(),它为Thread 类的方法 start() 所调用,提供我们的线程所要执行的代码。为了指定我们自己的代码,只需要覆盖它! 方法一:继承 Thread 类,重写方法 run(),我们在创建Thread 类的子类中重写 run() ,加入线程所要执行的代码即可。下面是一个例子:public class TwoThread extends Thread public void run() for ( int i = 0; i 10; i+ ) System.out.println(New thread); public static void main(String
3、 args) TwoThread tt = new TwoThread(); tt.start(); for ( int i = 0; i 10; i+ ) System.out.println(Main thread); 这种方法简单明了,符合大家的习惯,但是,它也有一个很大的缺点,那就是如果我们的类已经从一个类继承,则无法再继承 Thread 类。 方法二:实现 Runnable 接口 Runnable 接口只有一个方法 run(),我们声明自己的类实现 Runnable 接口并提供这一方法,将我们的线程代码写入其中,就完成了这一部分的任务。但是 Runnable 接口并没有任何对线程的支持,我们还必须创建 Thread 类的实例,这一点通过 Thread 类的构造函数public Thread(Runnable target);来实现。下面是一个例子:public class MyThread implements Runnable int count=1, number;public MyThread(int num) number = num;System.out.print
4、ln(创建线程 + number);public void run() /实现了接口的run()方法while(true) System.out.println(线程 + number + :计数 + count);if(+count= 6) return;public static void main(String args) for(int i = 0; i 5; i+)new Thread(new MyThread(i+1).start(); 使用 Runnable 接口来实现多线程使得我们能够在一个类中包容所有的代码,有利于封装下面让我们一起来研究一下多线程使用中的一些问题。三、线程的四种状态 1、新状态:线程已被创建但尚未执行(start() 尚未被调用)。 2、可执行状态:线程可以执行,虽然不一定正在执行。CPU 时间随时可能被分配给该线程,从而使得它执行。 3、阻塞状态:线程不会被分配 CPU 时间,无法执行;可能阻塞于I/O,或者阻塞于同步锁。 4、死亡状态:正常情况下run() 返回使得线程死亡。调用 stop()或 destroy() 亦有同样效果,但是不被推荐,前
《JAVA多线程编程详解-详细操作例子》由会员博****1分享,可在线阅读,更多相关《JAVA多线程编程详解-详细操作例子》请在金锄头文库上搜索。
轴对称复习讲义
把群众观念牢牢植根于干部头脑
管廊基坑降水施工组织方案6.3
幼儿园手指游戏大全
经典的生日祝福语大全
幼儿园传染病应急处理预案
地质学名词解释
麦当劳员工薪酬制度_麦当劳员工福利管理制度
PVC复合灯箱布项目创业计划书写作模板
北京理工大学非事业编制岗位应聘表
轮胎气门芯项目创业计划书写作模板
医院感染管理工作安排4篇
太钢袁家村铁矿项目概况
个人工作年终总结-2019最新个人工作总结
层次分析法在决策问题中的应用
职业适应性测试例题及答案.doc
金融中心基坑支护与降水施工组织设计范本
世界服务贸易发展机遇与宁波现代服务业发展的战略选择
中考物理热学知识点
2014秋季学期数学教研组工作计划(精)
2023-07-04 8页
2023-05-14 9页
2022-09-14 10页
2023-03-13 69页
2022-08-17 7页
2023-05-11 7页
2022-08-10 7页
2024-02-24 6页
2023-12-24 5页
2024-02-11 6页