文档章节

线程实现的两种方式及synchronized 关键字

勇恒
 勇恒
发布于 2017/07/04 23:08
字数 188
阅读 4
收藏 0

## thread实现两种方式:继承Thead和实现runnable接口

记住:new Thread().start() 和 new Thread.run()方法截然不同:

start会启动多线程跑,而run方法只是一个普通的运行方法,由主线程阻塞执行。

 

## synchronized是java的关键字,安全,但效率低。

当某个线程锁抛异常时,jvm会自动释放当前锁。

public class MySynchronized {
    public static void main(String[] args) {
        final MySynchronized mySynchronized1 = new MySynchronized();
        final MySynchronized mySynchronized2 = new MySynchronized();
        new Thread("thread-1"){
            public void run(){
                synchronized (mySynchronized1){

                    try {
                        System.out.println(this.getName()+":start");
                        int a = 1/0;//出现异常时,jvm释放锁
                        Thread.sleep(3000);
                        System.out.println(this.getName()+":sleep");
                        System.out.println(this.getName() + ":end");
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }

                }
            }
        }.start();
        new Thread("thread-2"){
            @Override
            public void run() {
                synchronized (mySynchronized1){//同一把锁,会等待
                    //synchronized (mySynchronized2){//
                    System.out.println(this.getName()+":start22");
                }
            }
        }.start();
    }
}

© 著作权归作者所有

共有 人打赏支持
勇恒
粉丝 2
博文 109
码字总数 58838
作品 0
杭州
JAVA 多线程编程

什么是线程 在当前的编程语言中,进程与线程是两种基本的运行单位 在操作系统运行时,可以看到多个进程在运作,而每个进程内又至少有一个线程在运行(主线程) 可以说,线程是当前最小的运行...

codetask
2016/12/19
9
0
深入理解ReentrantLock

在Java中通常实现锁有两种方式,一种是synchronized关键字,另一种是Lock。二者其实并没有什么必然联系,但是各有各的特点,在使用中可以进行取舍的使用。首先我们先对比下两者。 实现: 首先...

孟飞阳
2016/07/25
33
0
不使用synchronized和lock,如何实现一个线程安全的单例?

刚刚,在我的微信公众号(hollishcuang)上发了一条问题:不使用和,如何实现一个线程安全的单例? 瞬间收到了数百条回复。回答最多的是静态内部类和枚举。很好,这两种确实可以实现。 枚举 ...

2017/09/06
0
0
Java 多线程同步的五种方法

一、引言 前几天面试,被大师虐残了,好多基础知识必须得重新拿起来啊。闲话不多说,进入正题。 二、为什么要线程同步 因为当我们有多个线程要同时访问一个变量或对象时,如果这些线程中既有...

vshcxl
2016/12/21
131
0
Java设计模式之-单例模式(Singleton)

先说一下我自己对单例模式的理解: 单例模式:在整个程序运行周期内,某个类被设计为其所有实例都归属于一个副本,以保证含义上的唯一性和行为上的总控性。这种类的设计方式被称为单例模式。...

Mock2052
2017/11/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 识别慢性能的宏

Page Profiling 给你了有关页面在载入的时候操作缓慢的邪教,你可以将下面的内容添加到调试(debug)级别: Version 3.1 及其后续版本 设置包名字为 com.atlassian.renderer.v2.components.M...

honeymose
9分钟前
0
0
day93-20180920-英语流利阅读-待学习

时尚之觞:外表光鲜靓丽,其实穷得要命 Lala 2018-09-20 1.今日导读 讲到时尚界,我们脑海里浮现的可能都是模特和设计师光鲜靓丽、从容潇洒的模样。可是,最近在法国出版的一本书却颠覆了我们...

飞鱼说编程
24分钟前
0
0
maven的pom.xml用解决版本问题

maven管理库依赖,有个好处就是连同库的依赖的全部jar文件一起下载,免去手工添加的麻烦,但同时也带来了同一个jar会被下载了不同版本的问题,好在pom的配置里面允许用<exclusion>来排除一些...

JAVA码猿
48分钟前
1
0
20180920 rzsz传输文件、用户和用户组相关配置文件与管理

利用rz、sz实现Linux与Windows互传文件 [root@centos01 ~]# yum install -y lrzsz # 安装工具sz test.txt # 弹出对话框,传递到选择的路径下rz # 回车后,会从对话框中选择对应的文件传递...

野雪球
今天
2
0
OSChina 周四乱弹 —— 毒蛇当辣条

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 达尔文:分享花澤香菜/前野智昭/小野大輔/井上喜久子的单曲《ミッション! 健?康?第?イチ》 《ミッション! 健?康?第?イチ》- 花澤香菜/前野智...

小小编辑
今天
40
10

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部