- 浏览: 955489 次
- 性别:
- 来自: 魔都
文章分类
- 全部博客 (745)
- MultiThread (19)
- My Plan (118)
- JavaBasic (61)
- MyInterview (104)
- InternetTechnique (5)
- ProjectConclusion (1)
- Maven (5)
- MogoDb (5)
- Hadoop (11)
- Memcached (6)
- TechniqueCollect (1)
- Ibaits (1)
- Android (34)
- ItLife (40)
- Tree (2)
- ProjectArchitect (7)
- Open Source (3)
- liunx (5)
- socket (8)
- Spring (27)
- DesginPattern (35)
- WebBasic (13)
- English (13)
- structs (1)
- structs2 (2)
- Oracle (17)
- Hibernate (2)
- JavaScript (4)
- Jdbc (1)
- Jvm (15)
- Ibatis (1)
- DataStructures (13)
- Https/Socket/Tcp/Ip (3)
- Linux (4)
- Webservice (7)
- Io (2)
- Svn (1)
- Css (1)
- Ajax (1)
- ExtJs (1)
- UML (2)
- DataBase (6)
- BankTechnique (3)
- SpringMvc (3)
- Nio (3)
- Load Balancing/Cluster (3)
- Tools (1)
- javaPerformanceOptimization (8)
- Lucene(SEO) (1)
- My Think (80)
- NodeJs (1)
- Quartz (1)
- Distributed-java (1)
- MySql (7)
- Project (4)
- junit (4)
- framework (1)
- enCache (1)
- git (2)
- SCJP (1)
- sd (1)
最新评论
-
lkjxshi:
你都这水平了还考这个证干嘛
SCJP 认证考试指南 -
钟逸华:
问的真多
百度java开发面试题(转) -
zuimeitulip:
觉得我就是这样的,从小阅读量就很少,导致现在的读的速度非常慢, ...
让读书成为一种习惯 -
DDT_123456:
我觉得你是不符合要求。问你hashmap的那个问题,你那样回答 ...
阿里面试2(转) -
jingjing0907:
刚刚写了很多读过此博客的感受,竟然没有发上去,以为我注册账号还 ...
让读书成为一种习惯
1.多线程范围内间的线程共享数据(变量)(ThreadLocal,get(),put())
2.AtomicInteger(多线程定义变量)
3.线程间的通信(wait(),sleep(),notify())
4.总之,要同步互斥的几段代码最好是分别放在几个独立的方法中,这些方法再放在同一个类中,这样比较容易实现它们之间的同步互斥和通信。
极端且简单的方式,即在任意一个类中定义一个static的变量,这将被所有线程共享。
5.线程池:
ExecutorService threadPool = Executors.newSingleThreadExecutor();
ExecutorService threadPool = Executors.newFixedThreadPool(3);
ExecutorService threadPool = Executors.newCachedThreadPool();
threadPool.execute(new Runnable(){
@Override
public void run() {
for(int j=1;j<=10;j++){
try {
Thread.sleep(20);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + " is looping of " + j + " for task of " + task);
}
}
});
6.线程池在某个时间段做什么事,隔多长时间
Executors.newScheduledThreadPool(3).scheduleAtFixedRate(
new Runnable(){
@Override
public void run() {
System.out.println("bombing!");
}},
6,
2,
TimeUnit.SECONDS);
}
}
7.java.util.concurrent包及子包的API帮助文档,java.util.concurrent.atomic包
volatile类型的作用,java.util.concurrent.lock包
Volatile的意思是说:在jvm中,一个线程更新了共享变量i,另外一个线程立即去读取共享区中的i时,
读到的可能不是刚才另外那个线程更新过的结果,这就类似数据库中的事务隔离级别中的read uncommited,volatile就是解决这个问题的。
8.关闭线程池
shutdown与shutdownNow的比较
9.Future取得的结果类型和Callable返回的结果类型必须一致,这是通过泛型来实现的。
Callable要采用ExecutorSevice的submit方法提交,返回的future对象可以取消任务。
CompletionService用于提交一组Callable任务,其take方法返回已完成的一个Callable任务对应的Future对象。
10.Lock&Condition实现线程同步通信
Lock lock = new ReentrantLock();
Condition condition = lock.newCondition();
condition.await();
condition.signal();
读写锁:ReadWriteLock rwl = new ReentrantReadWriteLock();--->rwl.readLock().lock()(unlock);(读锁)--->rwl.writeLock().lock();(写锁)
有读锁,写锁,读写锁(更新锁)
11.Semaphore实现信号灯,其他同步工具类(CyclicBarrier--->表示大家彼此等待,大家集合好后才开始出发
CountDownLatch-->倒计时计数器),Exchanger(用于实现两个人之间的数据交换,每个人在完成一定的事务后想与对方交换数据,第一个先拿出数据的人将一直等待第二个人拿着数据到来时,才能彼此交换数据。
)
12.Java5中提供了如下一些同步集合类:
通过看java.util.concurrent包下的介绍可以知道有哪些并发集合
ConcurrentHashMap
CopyOnWriteArrayList
CopyOnWriteArraySet
13.condition(可以有多路等待情况)处理虚假唤醒
14.ArrayBlockingQueue(阻塞队列)只有put方法和take方法才具有阻塞功能
1.多线程
1.在静态方法中不能new类部类实列对象,内部类可以访问外部类的成员变量,静态方法执行的时候可以不创建对象
2.synchronized(name)---->互斥必须要是同一个对象(那把锁是同一个对象
3.静态方法同步(用Output.length字节码),静态方法跟字节码关联
2.AtomicInteger(多线程定义变量)
3.线程间的通信(wait(),sleep(),notify())
4.总之,要同步互斥的几段代码最好是分别放在几个独立的方法中,这些方法再放在同一个类中,这样比较容易实现它们之间的同步互斥和通信。
极端且简单的方式,即在任意一个类中定义一个static的变量,这将被所有线程共享。
5.线程池:
ExecutorService threadPool = Executors.newSingleThreadExecutor();
ExecutorService threadPool = Executors.newFixedThreadPool(3);
ExecutorService threadPool = Executors.newCachedThreadPool();
threadPool.execute(new Runnable(){
@Override
public void run() {
for(int j=1;j<=10;j++){
try {
Thread.sleep(20);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + " is looping of " + j + " for task of " + task);
}
}
});
6.线程池在某个时间段做什么事,隔多长时间
Executors.newScheduledThreadPool(3).scheduleAtFixedRate(
new Runnable(){
@Override
public void run() {
System.out.println("bombing!");
}},
6,
2,
TimeUnit.SECONDS);
}
}
7.java.util.concurrent包及子包的API帮助文档,java.util.concurrent.atomic包
volatile类型的作用,java.util.concurrent.lock包
Volatile的意思是说:在jvm中,一个线程更新了共享变量i,另外一个线程立即去读取共享区中的i时,
读到的可能不是刚才另外那个线程更新过的结果,这就类似数据库中的事务隔离级别中的read uncommited,volatile就是解决这个问题的。
8.关闭线程池
shutdown与shutdownNow的比较
9.Future取得的结果类型和Callable返回的结果类型必须一致,这是通过泛型来实现的。
Callable要采用ExecutorSevice的submit方法提交,返回的future对象可以取消任务。
CompletionService用于提交一组Callable任务,其take方法返回已完成的一个Callable任务对应的Future对象。
10.Lock&Condition实现线程同步通信
Lock lock = new ReentrantLock();
Condition condition = lock.newCondition();
condition.await();
condition.signal();
读写锁:ReadWriteLock rwl = new ReentrantReadWriteLock();--->rwl.readLock().lock()(unlock);(读锁)--->rwl.writeLock().lock();(写锁)
有读锁,写锁,读写锁(更新锁)
11.Semaphore实现信号灯,其他同步工具类(CyclicBarrier--->表示大家彼此等待,大家集合好后才开始出发
CountDownLatch-->倒计时计数器),Exchanger(用于实现两个人之间的数据交换,每个人在完成一定的事务后想与对方交换数据,第一个先拿出数据的人将一直等待第二个人拿着数据到来时,才能彼此交换数据。
)
12.Java5中提供了如下一些同步集合类:
通过看java.util.concurrent包下的介绍可以知道有哪些并发集合
ConcurrentHashMap
CopyOnWriteArrayList
CopyOnWriteArraySet
13.condition(可以有多路等待情况)处理虚假唤醒
14.ArrayBlockingQueue(阻塞队列)只有put方法和take方法才具有阻塞功能
1.多线程
1.在静态方法中不能new类部类实列对象,内部类可以访问外部类的成员变量,静态方法执行的时候可以不创建对象
2.synchronized(name)---->互斥必须要是同一个对象(那把锁是同一个对象
3.静态方法同步(用Output.length字节码),静态方法跟字节码关联
发表评论
-
子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。
2013-04-15 14:00 1273public class ThreadTest { ... -
java并发包(java.util.concurrent)
2013-03-26 23:46 2022java并发包(java.util.concurrent) ... -
java 死锁及解决
2013-03-19 22:54 962url:http://leowzy.iteye.com/bl ... -
断点续传的原理
2013-03-08 12:32 1175url:http://www.cnblogs.com/Kil ... -
《java并发编程实践》读书笔记
2012-08-21 23:07 1009文章链接:http://www.iteye.com/blogs ... -
ThreadLocal详解
2012-06-27 23:47 963文章链接: http://www.iteye.com/top ... -
多线程并发(java编程思想笔记)
2012-06-25 23:50 24631.Executor,java.util.concurr ... -
多线程例题(空中网)
2012-06-17 19:16 1030文章链接:http://blog.csdn ... -
ArrayBlockingQueue(阻塞队列)
2012-06-17 19:00 1574package cn.itcast.day3.thread; ... -
设计缓冲系统(多线程)
2012-06-17 18:57 1053package cn.itcast.day3.thread; ... -
Java多线程与并发库高级应用(传智播客)
2012-06-13 15:14 3763------------------------------- ... -
多线程断点续传下载
2012-06-05 20:58 1797package cn.itcast.net.downlo ... -
java多线程断点续传
2012-06-05 10:00 1350在android下面的断点 ... -
多线程高新(黑马程序员)
2012-03-30 16:23 1236------------------------------- ... -
生产者/消费者JAVA多线程
2012-03-28 09:58 1063文章链接:http://blog.csdn.net/bnuch ... -
主线程跟子线程怎么通讯 java
2012-03-17 19:24 4635学到多线程,编了一个简单地电脑城进出货模拟系统。 代码有点长 ... -
主线程与子线程之间通讯, 子线程与子线程之间的通讯 Java
2012-03-17 19:19 5376线程之间的通讯可以有两种方法. 一.利用全局变量. 大家都可 ... -
理解多线程
2011-09-27 17:40 878一、理解多线程 多 ...
相关推荐
Java多线程是Java编程中不可或缺的部分,它允许程序同时执行多个任务,提高了程序的效率和响应速度。本文主要探讨了多线程的概念、应用场景以及Java中创建线程的两种方式。 首先,进程和线程是理解多线程的基础概念...
【Java编程基础】 ...以上是黑马Java教程知识点笔记的主要内容,涵盖了Java编程的基础到进阶知识,是学习和巩固Java技能的重要参考资料。通过深入理解和实践这些知识点,开发者可以逐步提升Java编程能力。
这样的笔记通常涵盖Java基础、进阶特性、面向对象编程、异常处理、集合框架、多线程、IO流、网络编程、JVM优化等多个方面的内容。 首先,Java基础部分会讲解语法特性,如变量声明、数据类型、运算符、流程控制(if...
9. **多线程和AsyncTask**:Android应用通常在主线程中运行,为了进行耗时操作,需要学习如何使用线程和AsyncTask来避免阻塞用户界面。 10. **Android权限管理**:理解运行时权限的概念,学习如何在Android 6.0及...
6. **并发编程**:了解线程(threading模块)和进程(multiprocessing模块)的概念,以及如何在Python中实现并发。 7. **装饰器**:掌握这一强大的语法特性,用于修改或增强函数的行为。 8. **生成器**:学习如何...
这份笔记由多个部分组成,分别详细讲解了Java的基础语法、集合、多线程、IO以及反射和正则表达式等关键概念。 1. **基础语法**: - **变量与数据类型**:包括基本数据类型(如int、char、boolean)以及引用数据...
Java内置了对多线程的支持,可以通过实现Runnable接口或继承Thread类创建线程,通过synchronized关键字和Lock接口处理并发问题。 8. **网络编程**: Java提供了丰富的Socket编程API,可以实现客户端和服务端的...
【描述】:“黑马视频笔记集锦”涵盖了Android开发的各个方面,包括但不限于基础语法、UI设计、网络编程、数据存储、多线程处理、性能优化以及最新的Android框架和开发工具的使用。通过这些笔记,学习者能够系统地...
最后,笔记还涉及到了进程和线程管理,讲解了Intent和IntentService的使用,以及如何在多线程环境下处理任务,确保应用的流畅性。 总的来说,《黑马程序员安卓核心笔记》是一份全面且深入的学习资源,它不仅教授了...
最后,笔记可能包含一些进阶话题,如权限管理、多线程与线程池、内存管理和性能优化,还有最近版本的Android特性和最佳实践。这些内容能帮助你开发出更加高效和稳定的应用。 总而言之,《黑马程序员Android学习笔记...
黑马Java基础笔记是一份详尽的教程,旨在帮助初学者或自学人员扎实地掌握Java编程的基础。 首先,笔记可能涵盖了Java语言的基础语法,包括数据类型、变量、常量和运算符。Java提供了两种主要的数据类型:基本类型...
《Hibernate技术深度剖析——基于黑马程序员2016版讲义与笔记》 Hibernate,作为Java领域中的一个著名持久化框架,为开发者提供了强大的对象关系映射(ORM)功能,极大地简化了数据库操作。本资料集是黑马程序员...
它的设计目标是具备“简单性、面向对象、健壮性、安全性、可移植性、高效性、多线程和动态性”等特性。Java的语法与C++相似,但更注重简洁和可维护性,消除了C++中的许多容易引起错误的特性,如指针操作。 【面向...
这其中包括了对Java集合框架的理解(List、Set、Map接口及其实现类)、异常处理、多线程编程、IO流、反射、设计模式等进阶主题。 黑马程序员面试技巧则提供了面试策略和技巧,如如何清晰地表达思路,怎样在短时间内...
这表明这份资料可能聚焦于安卓开发的基础核心概念,如Android系统架构、Activity生命周期、Intent传递、数据存储、UI设计、多线程处理、网络编程等。这些内容对于安卓开发者来说至关重要,是构建应用的基础。 在...
- 其他特性还包括简单性、解释性、面向对象、高性能、分布式处理、多线程、健壮性、动态性、结构中立性和安全性等。 #### JDK、JRE与JVM的关系 - **JVM**(Java Virtual Machine):负责解释执行Java字节码,实现...
它通过多线程、线程池等机制实现资源的有效利用,提高程序运行效率。Java并发编程的核心在于正确处理共享资源的访问问题,避免出现数据不一致的情况。 #### 二、Java线程池(`ThreadPool`)原理 线程池是一种基于...
9. **多线程** - 创建线程的两种方式:继承Thread类和实现Runnable接口。 - 线程同步机制,包括synchronized关键字,wait(), notify(), notifyAll()方法,以及Lock接口的使用。 10. **反射机制** - 运行时动态...
这份资料涵盖了一系列关键知识点,包括但不限于Android基础、UI设计、数据存储、网络通信、多线程以及性能优化等方面。 首先,Android基础是入门的关键,它涉及到Android系统架构、Android Studio集成开发环境的...
12. **多线程**:C++11引入了内置的多线程支持,使得并发编程成为可能,可以利用多核处理器提高程序性能。 13. **C++11及后续版本的新特性**:例如auto关键字、lambda表达式、右值引用、智能指针等,这些新特性使得...