- 浏览: 260721 次
- 性别:
- 来自: 济南
文章分类
- 全部博客 (303)
- c (31)
- c++ (16)
- java (18)
- c# (1)
- python (3)
- java web (6)
- oracle (7)
- sqlserver (2)
- mysql (2)
- android (24)
- android系统 (15)
- android多媒体部分 (15)
- android游戏 (12)
- linux (26)
- javaScript (1)
- ajax (1)
- node JS (2)
- html (5)
- apache (3)
- jboss (1)
- weblogic (0)
- 通信协议 (10)
- 云计算 (1)
- 分布式 (5)
- ejb (1)
- webservice (5)
- 设计模式 (16)
- JNI (6)
- swing (13)
- 版本控制 (1)
- UML (1)
- xml (4)
- spring (5)
- hibernate (5)
- struts1 (3)
- struts2 (4)
- ibatis (0)
- tomcat (2)
- 心得体会 (1)
- css (1)
- 嵌入式 (41)
- arm体系结构 (10)
新建线程并启动的几种方法:
1
privateThreadthread=newThread("myThread");
Thread.start();
2
privateclassmyThreadextendsThread{
@Override
publicvoidrun(){
}
}
myThreadthread=newmyThread().start();
3
privateThreadthread=newThread(){
//构造器
@Override
publicvoidrun(){
}
};
thread.setName("myThread");
Thread.start();
4Threadthread=newThread(task);//传入任务
Thread.start();
5
Threadthread=newThread(task,"myThread");
Thread.start();
注:线程启动的时候一定要给它命名,以便于后期排错
响应线程中断
程序要对线程的中断作出对应的响应
方法一:
privateclassmyThreadextendsThread{
/**
*构造器
*/
publicmyThread(){
}
@Override
publicvoidrun(){
for(;;){
//耗时操作
doxxx();
//如果线程中断,作出相应操作
if(Thread.interrupted()){
break;
}
}
}
}
方法二:
方法三:
privateclassmyThreadextendsThread{
/**
*构造器
*/
publicmyThread(){
}
@Override
publicvoidrun(){
for(;;){
try{
doxxx();
}catch(InterruptedExceptione){
e.printStackTrace();
}
}
}
}
ThreadLocal(线程局部变量)作用就是为每个使用变量线程提供一个变量的副本
这样每个线程都可以改变自已的线程
使用线程局部变量一般定义在表态变量
注:如果没有调用remove方法,将会使内存溢出
任务的提交者和执行者
利用Executors这个工厂类来生产自已需要的executor
executorService=Executors.newFixedThreadPool(10);
任务的提交者和执行者之间的通信手段Future
//单例线程池
executorService=Executors.newSingleThreadExecutor();
classTaskWithResultimplementsCallable<String>{
@Override
publicStringcall()throwsException{
Stringresu="";
returnresu;
}
}
TaskWithResulttaskWithResult=newTaskWithResult();
Future<String>future=executorService.submit(taskWithResult);
try{
future.get();
}catch(InterruptedExceptione){
e.printStackTrace();
}catch(ExecutionExceptione){
e.printStackTrace();
}
Future的几个主要方法:
future.get();//阻塞主任务完成
future.cancel(ture);
Future.get(timeOut);//等待一段时间
线程池Executors中的部分方法
//一个可以重用固定线程数的线程池,以共享的无界队列方式来运行这些线程,
//在需要时可用ThreadFactory创建新线程,在关闭之前,池中的线程将一直存在
publicstaticExecutorServicenewFixedThreadPool(intnThreads){
returnnewThreadPoolExecutor(nThreads,nThreads,
0L,TimeUnit.MILLISECONDS,
newLinkedBlockingQueue<Runnable>());
}
//用于创建新线程的默认线程工厂,此工厂创建同一个线程组,如果有securityManager
//则它使用System.getXecurityManager()返回的组
publicstaticThreadFactorydefaultThreadFactory(){
returnnewDefaultThreadFactory();
}
//创建一个可以根据需要创建新线程的线程池,以前创建的线程可用时就重用它们
publicstaticExecutorServicenewCachedThreadPool(ThreadFactorythreadFactory){
returnnewThreadPoolExecutor(0,Integer.MAX_VALUE,
60L,TimeUnit.SECONDS,
newSynchronousQueue<Runnable>(),
threadFactory);
}
//它可以在规定延迟后运行命令或定期执行
publicstaticScheduledExecutorServicenewScheduledThreadPool(intcorePoolSize){
returnnewScheduledThreadPoolExecutor(corePoolSize);
}
//在未来某个指定的时间执行给定的命令
voidexecute(Runnablecommand);
//执行一次顺序关闭,执行一次之前提交的任务,并不接受新任务
voidshutdown();
线程的基本控制
thread.interrupt();
thread.sleep(0);
thread.join();
thread.start();
//过时的方法
thread.suspend();
thread.destroy();
thread.stop();
thread.resume();
发表评论
-
thread local 学习笔记
2012-11-08 15:45 620thread local(thread 的局部变量)解决多 ... -
mina 学习笔记一
2012-11-05 16:33 616mina下载路径 http://mina.apache.or ... -
多线程学习笔记一
2012-09-04 11:03 651/** * 子线程循环10次,主线程100次 如此 ... -
多线程学习笔记二
2012-09-04 11:05 625/** * 传统线程 * * @time 下午06:15 ... -
多线程学习笔记三
2012-09-04 11:06 610/** * 两个线程进行数据交换 * * @time 上 ... -
多线程学习笔记四
2012-09-04 11:08 652/** * 线程范围内的数据共享 * * 应用场景:减少 ... -
java swing 学习笔记一(画板Panel )
2012-09-04 11:18 1067/** * 画板 * * @time 3:38:10 P ... -
java swing学习笔记二(画布Canvas)
2012-09-04 11:19 3241/** * 画布 * @time 11:23:53 AM ... -
java IO流学习笔记一
2012-09-08 17:10 540IO 两大主流 16位和8位 16位对应writer和rea ... -
java 类装载器
2012-09-08 18:12 691public class ClassLoaderTest { ... -
并发库学习笔记二
2012-09-28 16:38 448阻塞队列(生产者和消费者开发模式) 三种常用的阻塞队 Ar ... -
并发库学习笔记三
2012-09-28 16:40 589Synchronized是lock的一种简化实现,一个l ... -
并发库学习笔记四
2012-09-28 16:42 658ConcurrentHashMap并没有实现Lock-Free ... -
并发库学习笔记五
2012-09-28 16:43 726并发流程控制CountDown ... -
java IO流学习笔记二
2012-10-03 00:24 622/** * * * 目录分隔符用\\或/ * * @ ... -
jdk5.0的特性
2012-10-03 00:28 6331静态导入 导入指定类 ... -
java IO流学习笔记三
2012-10-04 23:39 708转换流 inputStreamReader 字节转字符 o ...
相关推荐
Linux线程开发C++并发库学习笔记
Java并发库是Java平台中的核心组件,它为多线程编程提供了丰富的工具和接口,使得开发者能够高效、安全地实现并发程序。在Java并发库中,ExecutorService接口和相关的线程池是其核心部分,它们提供了线程管理和任务...
1. `concurrent_queue`:这是一个线程安全的队列,允许在多个线程之间并发地进行入队和出队操作。它使用锁或其他同步机制来确保在多线程环境中的正确性,避免竞态条件。 2. `concurrent_vector`:这是一个线程安全...
"JUC并发编程学习笔记(硅谷)"很可能包含了关于Java并发工具集(Java Util Concurrency, JUC)的深入理解和实战经验。JUC是Java标准库提供的一套强大的并发处理工具,它极大地简化了多线程编程,提高了程序的可读性...
张孝祥Java多线程与并发库高级应用学习笔记,很经典的学习多线程和并发的资料。张孝祥Java多线程讲义笔记由张孝祥亲自整理,很实用的。
总结来说,这份学习笔记为学习Go语言的读者提供了一个详尽的路线图,从基础语法、函数、数据结构到并发编程,再到深入理解标准库和高级特性,循序渐进地指导读者掌握Go语言。这些知识点对于想要深入学习Go语言的...
Go语言学习笔记.pdf 共174页是一本关于Go语言的详细学习笔记,涵盖了Go语言的基础知识、函数、数组、Maps、Structs、接口、并发、程序结构、标准库等方面的内容。本笔记共分为三大部分:Go语言基础、标准库和扩展库...
### 张孝祥Java多线程与并发库高级应用笔记概览 #### 一、Java多线程技术的重要性与挑战 Java线程技术是软件工程领域不可或缺的一部分,尤其在底层编程、Android应用开发以及游戏开发中,其重要性不言而喻。然而,...
"Go语言学习笔记-(详细书签)"是由雨痕编著的,这是一本详实的学习指南,包含了Go语言的基础语法、类型系统、接口、反射、错误处理以及标准库的使用等内容。书签的设置使得你可以快速定位到感兴趣的主题,无论是初学...
为了深入了解Go语言,学习笔记通常包含语言的基本概念、语法特性、开发环境配置及核心功能的使用方法。 首先,Go语言相较于C++等传统编程语言,有一些显著的特征区别。Go语言为了简化设计,不支持函数重载和操作符...
本学习笔记将深入探讨VHDL的基础概念、语法特性以及在实际设计中的应用。 1. **VHDL的基本结构** VHDL的结构主要包括实体(Entity)、架构(Architecture)、包(Package)和配置(Configuration)。实体描述了...
根据提供的信息,我们可以总结出这份文档是关于Go语言学习笔记的部分内容,主要涵盖了Go语言的基础概念、语法结构、数据类型以及并发模型等关键知识点。以下是对这些知识点的详细解析: ### Go语言概述 Go(也称作...
"Java学习笔记——良葛格"是一份专为初学者设计的教程资料,由良葛格精心编写,旨在帮助读者掌握JDK5.0版本的Java基础知识。JDK(Java Development Kit)是Java开发的核心工具集,包含了编译器、调试器和运行环境等...
这份"Java入门学习笔记"涵盖了imooc网站上Java入门课程的三个赛季的内容,旨在为初学者提供一个全面的学习资源。 笔记的第一部分是"Java入门第一季学习笔记",它可能包括Java的基础概念和语法。这部分可能会讲解...
《Go学习笔记-第四版》是由知名编程作者雨痕编写的关于Go语言的教程,旨在帮助读者深入理解和掌握Go语言的各个方面。Go语言,又称Golang,是Google于2009年推出的一种静态类型的、编译型的、并发型且具有垃圾回收...
多线程学习笔记 iOS开发中,多线程是一种常见的技术手段,用于优化应用程序的性能,提升用户体验。多线程的核心是让程序能够并发地执行多个任务,合理地利用设备的计算能力,尤其是在拥有多个核心的处理器上。 ...
Go语言学习笔记的知识点涵盖广泛,它从基础的语法到高级的并发编程,再到源码的剖析,全面介绍了Go语言的特点和编程技巧。以下是根据所提供的文件内容提取的知识点: 1. Go语言基础:Go是一种静态类型编程语言,...
6. **线程与并发**:探讨线程的基本概念、创建与管理,同步机制(如synchronized关键字、wait()、notify()、锁等),以及Java并发库(如ExecutorService、Future、Callable等)的使用。 7. **反射机制**:介绍如何...