美文网首页
Java多线程(一)线程创建

Java多线程(一)线程创建

作者: GIT提交不上 | 来源:发表于2019-08-19 23:27 被阅读0次

    一、基本概念

    1. 原子性:和数据库事务中的原子性一样,满足原子性特性的操作是不可中断的,要么全部执行成功要么全部执行失败。
    2. 可见性:一个线程对变量的值进行了修改,其他线程能够立即得知这个修改。
    3. 有序性:程序执行的顺序按照代码的先后顺序执行。

      线程主要分为五个状态,1)新建 2)可运行 3)正在运行 4)阻塞 5)终止。线程同步机制包括内置锁(synchronized)、显式锁(lock)、volatile类型变量、原子变量。线程状态迁移图如图1-1所示:

    图1-1 Java线程状态迁移图

    二、Java内存模型 & Java内存结构

      Java内存模型(Java Memory Model ,JMM)是一种符合内存模型规范的,屏蔽了各种硬件和操作系统的访问差异的,保证了Java程序在各种平台下对内存的访问都能保证效果一致的机制及规范。(本地内存 & 主内存)


    图2-1 Java内存模型.png

      缓存一致性协议:当CPU写数据时,如果发现操作的变量是共享变量,即在其他CPU中也存在该变量的副本,会发出信号通知其他CPU将该变量的缓存行置为无效状态,因此当其他CPU需要读取这个变量时,发现自己缓存中缓存该变量的缓存行是无效的,那么它就会从内存重新读取。(Synchronized、Voliate)
      JVM内存结构:由Java虚拟机规范定义,描述的是Java程序执行过程中,由JVM管理的不同数据区域。各个区域有其特定的功能,Java虚拟机运行时数据区如图2-2所示:

    图2-2 运行时数据区.png

    三、线程创建

    1) 继承Thread类创建线程类

    public class HelloWorldBaseThread extends Thread{
        private String name;
    
        public HelloWorldBaseThread(String name) {
            this.name = name;
        }
    
        @Override
        public void run() {
            System.out.println("hello"+this.name);
        }
    }
    /*类分割线*/
    public class ThreadTest {
        public static void main(String[] args) {
            HelloWorldBaseThread t1 = new HelloWorldBaseThread("Thread");
            t1.start();
        }
    }
    

    2) 实现Runnable接口创建线程类

    public class HelloWorldBaseRunnable implements Runnable{
    
        private String name;
    
        public HelloWorldBaseRunnable(String name) {
            this.name = name;
        }
    
        @Override
        public void run() {
                System.out.println("hello" + this.name);
        }
    }
    /*类分割线*/
    public class RunnableTest {
        public static void main(String[] args){
            Thread t1 = new Thread(new HelloWorldBaseRunnable("Runnable"));
            t1.start();
        }
    }
    

    相关文章

      网友评论

          本文标题:Java多线程(一)线程创建

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