个人总结java扩展知识(线程和进程) - Angel's Blog.

ing
 
 
软件开发,程序设计,前端设计
 
 
首页 > code > 个人总结java扩展知识(线程和进程)

个人总结java扩展知识(线程和进程)

 
线程和进程
线程和多进程的本质区别
 {
每个进程有它自己的变量的完备集,线程则共享相同的数据。
对程序来说,共享变量的使线程之间的通信比进程间的通信更加有效而简单。
 }
创建一个线程的模式
 {
1)写一个类,这个类必须实现Runnable接口,这个接口很简单,只有一个方法run();
2)在这个方法中写入任务处理的代码。
public void run()
{
task code;
}
3)创建写的这个类的对象,对多态型式创建Runnable r=new MyRunnable();
4)由Runnable创建一个Thread对象 Thread t=new Thread(r);
5)启动线程 t.start();此方法调用run()方法中的内容。
 }
java.lang.Thread
 {
Thread(Runnable target)构造一个新的线程来调用指定的target的run()方法 。
void start()启动这个线程,会创建一个新的线程来执行任务。
void run()调用关联的Runnable 的run()方法。会在当前的线程中执行任务,并不会启动新的线程
currentThread()返回对当前正在执行线程对象的引用。
interrupted()测试当前线程是否已经中断。注意这是一个静态的方法。它会将当前的线程的中断状态设成false。
isInterrupted()检查一个线程是否被终止了。这个方法不会改变线程的中断状态。
interrupt()中断线程
isAlive()测试线程是否处于活动状态。
 }
线程状态
 {
1)New(新生)使用new操作符创建一个线程,此线程处于新生状态
 激活状态
 { 
2)Runnable(可运行)调用了start()方法此线程成为可运行的了
3)Blocked(被阻塞)
 }
4)Dead(死亡)
 }
线程属性
 {
1)线程优先级
2)守护线程;是为线程提供服务的线程
3)线程组;
 }
同步
 {
1)竟争条件;如果有两个或多个线程访问相同的对象,
而且每一个都调用了一个会改变对象状态的方法,
那么可能会产生腐蚀的对象。这叫做竞争条件
要想解决这个问题那么就要保证线程在运行完之前不会丢失控制权,不会中断。
 }
 java.lang.Runnable
 {
void run()必须重载此方法。并且在这个方法中为你想执行的任务提供相关的处理代码
 }

 

锁机制

 

 {
原理:任何时刻只有一个线程能够进入临界区。一旦一个线程锁住了锁对象,其他任何线程都无法通过lock语句。
当其他线程调用lock时,它们会被除数阻塞,直到第一个线程释放锁对象。

 基本结构
 {
mylock.lock();获取锁对象
try
 {
任务代码;此处必须小心处理代码,如果有异常抛出则就会释放锁对象。
那么对象就会处于受损状态。
 }
 finally
{
mylock.unlock();释放锁对象
}
}
 锁测试和超时
 {
原理;线程在调用lock()方法业获得另一个线程所持有的锁时,不时地会发生阻塞。
所以对获得锁更加谨慎。
trylock()方法试图获得一个锁,如果成功则返回true,否则立即返回false,
并且线程可以立即离开去干任何其他的事。
 }
 trylock()和lock()的区别
 {
trylock()如果线程在等待时被中断将抛出一个InterruptedException异常。
lock()如果线程在等待获得一个锁时被中断,那么中断线程将一直阻塞直到锁可获得为止。
如果发生死锁,那么lock() 方法就无法终止。
 }
 }

java.util.concurrent.locks.ReentrantReadWriteLock

 {
读/写锁
{
当有很多线程都从数据结构中读取数据而很少有线程对其进行修改时。这种情况下,
允许读取器线程共享访问是合适的。当然,写入器线程依然必须是互斥访问的。
}
 }

java.util.concurrent.locks.Condition接口

{
1)Condition newCondition()返回一个与锁相关的条件对象
2)void await()把线程放到条件的等待集中.并且释放锁
3)void sianalAll()解除该条件的等待、集中所有线程的阻塞状态
}
volatile关键字为对一个实例的域的同步访问提供一个免锁机制。如果你把域声明为volatile,那么编译器和虚拟机就知道这个域可能会被另一个线程并发更新
在下面三个条件下,对一个域的并行访问是安全的
 {
1)域是volatile
2)域是final的,并且在构造器调用完成后被访问。
}
通过RMI远程访问服务器对象的方法。
{
1)服务器端使用自举注册服务,启动方法
{
run:start rmiregistry
}
 }
Exception类 extends Throwable
 {
Exception 类及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件;
 }
或者通过RSS 关注本站的更新 ^ O ^ 。” —  by  转载请注明:来自 Angel's Blog.
本文永久链接: http://www.0ee.com/2010/08/23/java-knowledge4.html
 
分类: code标签: , ,
 
  • QQ书签
  • Del.icio.us
  • 百度收藏
  • Google
  • 饭否
  • FriendFeed
 

 
评论 (0) Trackbacks (0)
发表评论 Trackback
 
No Comment Contributed by Visitors
(Got a sofa?)
  1. 本文目前尚无任何评论.
Leave Comments Here...

:) :-D :( :-o 8-O :-? 8) lol :-x :-P oops cry evil twisted wink ? idea :-| arrow mrgreen roll !

(required)

(required)

网址随您("http://"可以省略)

(Ctrl+Enter)

  • 本站不会泄露您的 Email 地址, 敬请放心.
  • 本站已开启缓存, 请不要重复提交评论.
  • 请注意: 带有 《广告(链)、不健康、或者 产品名字》 的评论一律视为spam.
  • 支持常用 HTML 标签调用, 插入 HTML 标签需注意: < == &lt;> == &gt;.
  • 仅当某人针对您的评论做出回应时, 您才会收到由本站发出的邮件通知.
  • 如您希望以相同方式通知某位网友, 请点击  按钮进行回复.
  • 允许在评论中使用如下代码: 
    <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> 
    <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> 
    .
  • 鼠标悬浮到评论中的 @someone 区域即可自动显示 someone 的评论内容.
 
 
  • 正在加载...