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

    异步+线程池:两个线程A、B可以并发执行,没有依赖关系,两者可以独立运行

      https://www.cnblogs.com/liumaowu/p/9293627.html 

    同步:线程A、B之间有依赖关系,B运行前必须A先运行完,故同步已经实现了互斥

    互斥:线程A、B同时访问临界资源,同时只有一个线程能访问临界资源

    进行多线程代码的实现有两种方式:

      1、继承Thread类 2、实现Runnable接口

    方法一:继承thread类

      当一个类需要按照多线程的方式处理时,可以让这个类直接继承自Thread类即可,而且继承的时候要覆写好Thread类中提供的run()方法:

      范例:按照要求定义一个线程类
      class MyThread extends Thread { // 继承Thread类
        public void run(){ // 做为线程的主体
          for(int x=0;x<5;x++){
            System.out.println("x = " + x--) ;
          }
        }
       };

      

      

      

        

    方法二:实现runnable接口

      

    两种实现方式的区别:

      

      

      

      

      

      现在的代码中可以发现,count属性已经被所有的线程对象所共同拥有了

    两种实现方式的联系:

      

    线程的状态

      

    每一个线程对象都要经历五个步骤:
      1、初始化:当创建了一个新的线程对象时
      2、等待:调用了start()方法
      3、执行:调用run()执行的操作的过程
      4、停止:因为所有的线程都需要进行CPU 资源的抢占,那么当一个线程执行完部分代码要交出资源,留给
        其他线程继续执行。
      5、卸载:所有的线程的操作代码都执行完毕之后,就将线程对象卸载下来。

       在本程序中发现出现了一个main 线程,那么这个线程肯定是主方法产生的,之前一直强调,java 本身是属于多线程  的处理机制,所以每次java运行的时候,实际上都会启          动一个JVM的进程。那么既然是多线程的处理机制,实际上主方法是在一个JVM 上产生的一个线程而已,那么一个JVM 启动的时候至

          少启动几个线程呢?两个:main、GC。

     线程的同步与死锁(当多个线程要对同一资源进行操作时,要用到同步操作,同一资源操作不仅仅是写操作,如果有读有些写的,读写部分都要进行同步操作)

      

      

      

      

      

      

      

    线程操作的经典案例——生产者和消费者

      以上就是多线程的基本操作,但是在整个多线程存在一个经典的交互案例,生产者和消费者。先通过代码观察问题,
      现在假设说要生产的是一组信息,此组信息有两种选项:
        ·oracle à 数据库
        ·java à www.sun.com.cn

      

      

       

      

      

      

      

      

      

      

      

  • 相关阅读:
    Spring-MVC
    Spring与MyBatis整合(哇,快来看,他写的真好,简单易懂哎)
    Spring事务终极版...
    JdbcTemplate(增删改查以及以注释实现增删改查)
    AOP进阶
    MyBatis增删改查
    JSP的数据交互
    JSP数据交互
    JSP中9大内置对象
    动态网页开发基础
  • 原文地址:https://www.cnblogs.com/smallpigger/p/9593949.html
Copyright © 2011-2022 走看看