文档章节

线程实现的两种方式及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();
    }
}

© 著作权归作者所有

共有 人打赏支持
上一篇: java 中的lock锁
下一篇: final 关键字
勇恒
粉丝 2
博文 109
码字总数 58838
作品 0
杭州
私信 提问
JAVA 多线程编程

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

codetask
2016/12/19
9
0
Java 多线程同步的五种方法

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

vshcxl
2016/12/21
131
0
没听说过这些,就不要说你懂并发了,three。

转自http://www.cnblogs.com/zuoxiaolong/p/con2.html 并发编程的简单分类      并发常见的编程场景,一句话概括就是,需要协调多个线程之间的协作,已保证程序按照自己原本的意愿执行。...

付翔
2015/03/25
0
0
不使用synchronized和lock,如何实现一个线程安全的单例?

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

2017/09/06
0
0
深入理解ReentrantLock

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

孟飞阳
2016/07/25
33
0

没有更多内容

加载失败,请刷新页面

加载更多

解析JQuery中each方法的使用

each() 方法规定为每个匹配元素规定运行的函数。写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 概述: each() 方法规定为每个匹配...

前端攻城小牛
5分钟前
0
0
深入解析Vue开发动态刷新Echarts组件的教程

需求背景:dashboard作为目前企业中后台产品的“门面”,如何更加实时、高效、炫酷的对统计数据进行展示,是值得前端开发工程师和UI设计师共同思考的一个问题。今天就从0开始,封装一个动态渲...

peakedness丶
18分钟前
2
0
memcached

memcached 为了避免内存碎片化(传统的内存管理方式是,使用完通过malloc分配的内存后通过free来回收内存,这种方式容易产生内存碎片并降低操作系统对内存的管理效率),采用了 slab allocatio...

Cobbage
18分钟前
2
0
keepalived的介绍及配置高可用集群

12月19日任务 18.1 集群介绍 18.2 keepalived介绍 18.3/18.4/18.5 用keepalived配置高可用集群 集群介绍 根据功能划分为2类:高可用和负载均衡 高可用集群:通常为两台服务器,一台工作,另外...

robertt15
19分钟前
5
0
WiFi攻击的三种方式

导读 WiFi的安全问题已经引起了不少的使用者重视,甚至已经出现草木皆兵的现象。那么黑客到底是如何做到绕过身份验证来获取WiFi使用权的呢?主要有以下三种方式,其中最后一种方式十分简单。 ...

问题终结者
33分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部