zoukankan      html  css  js  c++  java
  • Java中线程和线程池

    Java中开启多线程的三种方式

    1、通过继承Thread实现

    public class ThreadDemo extends Thread{
        public void run(){
            System.out.println("extends Thread");
        }
    
    }
    
    ThreadDemo th=new ThreadDemo();
    th.start();
    

    2、implements Runnable 这种方式使用较多,面向接口可以多实现

    public class ThreadRunableDemo implements Runnable {
        public void run() {
            System.out.println("implements Runnable");
        }
    }
    
    Thread thread=new Thread(new ThreadRunableDemo());
    thread.start();
    
    //可以采用匿名对象的方式就不用再创建类了
    Thread thread2=new Thread(new Runnable() {
        public void run() {
            System.out.println("匿名对象形式");
        }
    });
    thread2.start();
    

    3、通过实现Callable接口+Future

    public class ThreadCallable implements Callable<String> {
    
        public String call() throws Exception {
            return "aaaa";
        }
    }
    
    Callable<String> callable = new ThreadCallable();
    FutureTask<String>futureTask=new FutureTask<String>(callable);
    //会阻塞线程
    futureTask.get();
    

    关于Runable和Callable的区别

    https://blog.csdn.net/heyutao007/article/details/19072675

    java中线程池

    ExecutorService es = Executors.newFixedThreadPool(2);
    
    es.submit(new Runnable() {
        public void run() {
            System.out.println(Thread.currentThread().getName());
        }
    });
    es.submit(new Runnable() {
        public void run() {
            System.out.println(Thread.currentThread().getName());
        }
    });
    

    线程安全

    synchronized 同步

    # 同步代码块
     synchronized (obj) {}
    
    # 同步方法
    public synchronized void DT() {}
    

    锁(jdk1.5后)

    private Lock lock = new ReentrantLock();
    lock.lock();
    do something.......
    lock.unlock();


    https://www.cnblogs.com/CarpenterLee/p/9558026.html


  • 相关阅读:
    SpringBoot 发送邮件
    @Component 爆红
    Java 调用OpenCV获取图像数据,发送Redis并从Redis获取数据显示
    xxx.bat windows Bat文件启动cmd命令运行jar包
    队列
    paramiko连接服务器
    matplotlib模块画坐标图
    获取当前时间
    jsonpath和打印模板
    提取图片中的文字
  • 原文地址:https://www.cnblogs.com/tianboblog/p/9216236.html
Copyright © 2011-2022 走看看