14 多线程

多进程与多线程的区别, 本质的区别在于每个进程拥有自己的一整套变量, 然后线程则共享数据. 另外, 与进程比较, 线程更"轻量级", 创建,
撤销一个线程比启动新的进程的开销要小得多. 在实际应用中, 多线程非常有用, 例如: 一个浏览器可以同时下载几幅图片.

如果需要执行一个比较耗时的任务, 应该使用独立的线程.

下面是一个单独线程中执行一个任务的简单过程:

1) 将任务代码移动到实现了 Runnable 接口的类的 run 方法中.

class MyRunnable implements Runnable {

  public void run() {task code}

}

2) 创建一个类对象, Runnable r = new MyRunnable();

3) 有 Runnable 创建一个 Thread 对象

Thread t = new Thread(r);

4) 启动线程

t.start();

中断线程

让run方法执行完了, 或者出现了在方法中没有捕获的异常时, 线程将终止. 每个线程都有个 boolean类型的flag, 用来判断此线程是否已经终止.
首先需要调用 Thread.currentThread 获得运行时的当前线程, 然后再调用 isInterrupted() 判断是否终止, 即
Thread.currentThread().isInterrupted(), 但是, 如果线程被阻塞, 就无法检测中断状态.  这样就会产生
InterruptedException 异常如果该线程已经被阻塞.

线程的状态

new, Runnable, Blocked, Waiting, Timed waiting, Terminated

同步

synchronized 关键字

14 多线程,布布扣,bubuko.com

时间: 2024-11-29 03:05:15

14 多线程的相关文章

Delphi多线程编程(14)--多线程同步之WaitableTimer(等待定时器对象)

转载自:万一的博客 function CreateWaitableTimer( lpTimerAttributes: PSecurityAttributes; //安全 bManualReset: BOOL; //True:可调度多个线程:False:只调度一个线程 lpTimerName: PWideChar //名称 ):THandle; stdcall; //返回句柄 function SetWaitableTimer( hTime: THandle; //句柄 var lpDueTime

iOS多线程中的单例

1 #import "MyHandle.h" 2 3 static MyHandle *handle = nil; 4 @implementation MyHandle 5 // 传统写法 6 // 此时如果多个任务并发执行,他就不会满足单例的优点 7 //+ (MyHandle *)shareMyHandle { 8 // if (nil == handle) { 9 // handle = [[MyHandle alloc] init]; 10 // } 11 // return

深入理解多线程二

涉及到: 1.synchronized对象监视器为Object时的使用 2.synchronized对象监视器为Class时的使用 3.非线程安全是如何出现的. 4.关键字volatile的主要作用 5.关键字volatile与synchronized的区别与使用情况 一:同步方法: (1).非线程安全与线程安全 非线程安全是指多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是"读脏",也就是 取到的数据是被更改过的. 而线程安全是获得实体变量的值是经过同步处理的,不会

【面试】iOS 开发面试题(二)

1. 我们说的oc是动态运行时语言是什么意思? 答案:多态. 主要是将数据类型的确定由编译时,推迟到了运行时. 这个问题其实浅涉及到两个概念,运行时和多态. 简单来说,运行时机制使我们直到运行时才去决定一个对象的类别,以及调用该类别对象指定方法. 多态:不同对象以自己的方式响应相同的消息的能力叫做多态.意思就是假设生物类(life)都用有一个相同的方法-eat; 那人类属于生物,猪也属于生物,都继承了life后,实现各自的eat,但是调用是我们只需调用各自的eat方法. 也就是不同的对象以自己的

计算机操作系统--学习心得

第一周: 第一章 计算机操作系统概述 1.1 计算机系统概览 1.2 计算机硬件系统 1.3 计算机软件系统 1.4 计算机操作技术的发展 1.5 计算机操作系统 1.6 资源管理的角度 1.7 程序控制的角度 第二周: 第一章 计算机操作系统概述 1.8 操作系统控制计算机的角度 1.9 人机交互的角度 1.10 程序接口的角度 1.11 系统结构的角度 第二章 处理器管理 2.1 处理器与寄存器 2.2 指令与处理器模式 2.3 中断 2.4 中断源 第三周: 第二章 处理器管理 2.5 中

JAVA基础知识点总结(全集)

1.JAVA简介 1.1java体系结构:j2se,javaweb,j2ee 1.2java特点:平台无关(虚拟机),垃圾回收(使得java更加稳定) 1.3 JDK与JRE,JDK:java开发环境,JRE:java运行环境 1.4第一个java程序:HelloWorld,java的入口是main(public static void main(String[] args)) 1.5java程序的开发步骤:.java编译(javac)成.class运行(java).class文件 2.基本数据

第二十三天笔记

黑马程序员  <a href="http://www.itheima.com" target="blank">java培训</a> 第二十一天笔记 1.什么是线程     线程是程序执行的一条路径, 一个进程中可以包含多条线程      多线程并发执行可以提高程序的效率, 可以同时完成多项工作     2多线程(多线程并行和并发的区别)   并行就是两个任务同时运行,就是甲任务进行的同时,乙任务也在进行.(需要多核        CPU)  

【转】Python 代码调试技巧

转载自:http://www.ibm.com/developerworks/cn/linux/l-cn-pythondebugger/ Debug 对于任何开发人员都是一项非常重要的技能,它能够帮助我们准确的定位错误,发现程序中的 bug.python 提供了一系列 debug 的工具和包,可供我们选择.本文将主要阐述如何利用 python debug 相关工具进行 debug. 使用 pdb 进行调试 pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能

关于Python代码调试的问题

关于Python代码调试的问题使用 pdb 进行调试pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点.单步调试.进入函数调试.查看当前代码.查看栈片段.动态改变变量的值等.pdb 提供了一些常用的调试命令,下面结合具体的实例讲述如何使用 pdb 进行调试.import pdb   a = "aaa" pdb.set_trace()   b = "bbb" c = "ccc" fin