zoukankan      html  css  js  c++  java
  • 多线程

    java中要想实现多线程,有两种手段,一种是继承Thread类,另外一种是实现Runable接口。

    继承Thread类重写run方法

    public class ThreadDemo1 {
         public static void main(String[] args){
             Demo d = new Demo();
             d.start();
             for(int i=0;i<60;i++){
                 System.out.println(Thread.currentThread().getName()+i);
             }
    
         }
     }
     class Demo extends Thread{
         public void run(){
             for(int i=0;i<60;i++){
                 System.out.println(Thread.currentThread().getName()+i);
             }
         }
     }

    实现Runnable接口重写run方法

    public class ThreadDemo1 { public static void main(String[] args){ Demo d = new Demo(); new Thread(d).start(); for(int i=0;i<60;i++){ System.out.println(Thread.currentThread().getName()+i); } } } class Demo implements Runnable{ public void run(){ for(int i=0;i<60;i++){ System.out.println(Thread.currentThread().getName()+i); } } }
    多线程的常用方法

    object.wait():

    在其他线程调用此对象的notify()或者notifyAll()方法前,线程一直处于休眠状态

    Thread.sleep():

    在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。监控状态依然保持、会自动恢复到可运行状态,不会释放对象锁

     thread.join():

     在一个线程对象上调用,使当前线程等待这个线程对象对应的线程结束。

     Thread.yield():暂停当前正在执行的线程对象,并执行其他线程。

     thread.interrupt()

       中断线程,停止其正在进行的一切。中断一个不处于活动状态的线程不会有任何作用。

       如果线程在调用Object类的wait()方法、或者join()、sleep()方法过程中受阻,则其中断状态将被清除,并收到一个InterruptedException。

     Thread.interrupted():检测当前线程是否已经中断,并且清除线程的中断状态(回到非中断状态)。

     thread.isAlive():如果线程已经启动且尚未终止,则为活动状态。

     同步与死锁

     在多线程中如何找到安全问题所在:
      1,明确哪些代码是多线程运行代码  
      2,明确共享数据
      3,明确多线程运行代码中哪些代码是操作共享数据的

  • 相关阅读:
    gThumb 3.1.2 发布,支持 WebP 图像
    航空例行天气预报解析 metaf2xml
    Baruwa 1.1.2 发布,邮件监控系统
    Bisect 1.3 发布,Caml 代码覆盖测试
    MoonScript 0.2.2 发布,基于 Lua 的脚本语言
    Varnish 入门
    快速增量备份程序 DeltaCopy
    恢复模糊的图像 SmartDeblur
    Cairo 1.12.8 发布,向量图形会图库
    iText 5.3.4 发布,Java 的 PDF 开发包
  • 原文地址:https://www.cnblogs.com/54ljj/p/5405921.html
Copyright © 2011-2022 走看看