美文网首页
java_线程

java_线程

作者: 738bc070cd74 | 来源:发表于2016-04-11 14:30 被阅读68次

线程实现

1、扩展java.lang.Thread类。
此类中有个run()方法,应该注意其用法:
public void run()
如果该线程是使用独立的Runnable运行对象构造的,则调用该Runnable对象的run方法;否则,该方法不执行任何操作并返回。
Thread的子类应该重写该方法。

2、实现java.lang.Runnable接口。
void run()
使用实现接口Runnable的对象创建一个线程时,启动该线程将导致在独立执行的线程中调用对象的run方法。
方法run的常规协定是,它可能执行任何所需的操作。

获取当前线程的对象的方法是:Thread.currentThread();
睡眠的实现:调用静态方法。

    try {            
         Thread.sleep(1000);        
    } catch (InterruptedException e) {  
         e.printStackTrace();         
    }

Java中的锁

当数据竞争存在的时候,最简单的解决办法就是加锁。锁机制限制在同一时间只允许一个线程访问产生竞争的数据的临界区。Java语言中的 synchronized关键字可以为一个代码块或是方法进行加锁。任何Java对象都有一个自己的监视器,可以进行加锁和解锁操作。当受到 synchronized关键字保护的代码块或方法被执行的时候,就说明当前线程已经成功的获取了对象的监视器上的锁。当代码块或是方法正常执行完成或是发生异常退出的时候,当前线程所获取的锁会被自动释放。一个线程可以在一个Java对象上加多次锁。同时JVM保证了在获取锁之前和释放锁之后,变量的值是与主存中的内容同步的。

线程的同步

在有些情况下,仅依靠线程之间对数据的互斥访问是不够的。有些线程之间存在协作关系,需要按照一定的协议来协同完成某项任务,比如典型的生产者-消费者模式。这种情况下就需要用到Java提供的线程之间的等待-通知机制。当线程所要求的条件不满足时,就进入等待状态;而另外的线程则负责在合适的时机发出通知来唤醒等待中的线程。Java中的java.lang.Object类中的[wait]

volatile

用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最的值

中断线程

通过一个线程对象的interrupt()方法可以向该线程发出一个中断请求。中断请求是一种线程之间的协作方式。当线程A通过调用线程B的interrupt()方法来发出中断请求的时候,线程A 是在请求线程B的注意。线程B应该在方便的时候来处理这个中断请求,当然这不是必须的。当中断发生的时候,线程对象中会有一个标记来记录当前的中断状态。通过isInterrupted()方法可以判断是否有中断请求发生。如果当中断请求发生的时候,线程正处于阻塞状态,那么这个中断请求会导致该线程退出阻塞状态。
volatile 变量对所有线程是立即可见的,对 volatile 变量所有的写操作都能立即反应到
其他线程之中,换句话说:volatile 变量在各个线程中是一致的,所以基于 volatile 变量的运算是线程安全的

ThreadLocal

ThreadLocal是一个线程内部的数据存储类,通过它可以在指定的线程中存储数据,数据存储以后,只有在指定线程中可以获取到存储的数据,对于其它线程来说无法获取到数据

android 线程池

Android_ThreadPool

相关文章

  • java_多线程

    java_多线程 线程创建方式;join用法; sleep和wait区别; 线程安全和不安全的java集合; St...

  • java_线程

    线程实现 1、扩展java.lang.Thread类。此类中有个run()方法,应该注意其用法:public vo...

  • java_线程池

    Executors 四种线程池 newFixedThreadPool(int var0)固定线程数, 使用了Lin...

  • Java_多线程

    线程概述 进程 是程序的一次动态执行 对应着从代码加载,执行至执行完毕的一个完整的过程,是一个动态的实体,它有自己...

  • Java_多线程

    1.知识点: 1.介绍多线程2.线程安全 2.知识点的运用: 1.多线程的作用: 发挥多核CPU的优势,充分利用C...

  • Java_多线程(线程池 )

    线程池 我们在项目中往往会创建线程以方便使用,但如果在并发的线程数量多,并每个线程都执行一个时间很短的任务就结束时...

  • Java_多线程 (线程组)

    在java的多线程处理中有线程组ThreadGroup的概念,ThreadGroup是为了方便线程管理出现的,可以...

  • Java_多线程(死锁)

    死锁的思路是:多线程同时被阻塞,他们中一个或者全部都在等待某个资源被被释放.由与线程被无限期地阻塞,因此程序不可能...

  • JAVA_线程中断与InterruptedException

    什么是线程中断: 要有线程中断,则需要有线程等待为前提:等待1.当线程调用了sleep,wait,join方法时,...

  • JAVA_多线程同步方式

    https://www.cnblogs.com/XHJT/p/3897440.html 1.synchronize...

网友评论

      本文标题:java_线程

      本文链接:https://www.haomeiwen.com/subject/inkilttx.html