java多线程三种方式区别,java多线程,线程同步方式,线程同步加锁的方法,wait与sleep区别

原创 2015年11月21日 19:21:51

java多线程三种方式区别



1)实现Runnable接口

        定义线程类,实现Runnable接口,重写其public void run(),将此类的对象当做Thread类的构造函数中的参数

       所有子线程公用一套run中代码

2)继承Thread类

        所有子线程各有一套自己的run代码

3)使用ExecutorService,Callable,Future实现有返回结果的多线程


java多线程


1)进程是资源分配的最小单位,线程是处理机调度执行的最小单位;不同的进程有各自的逻辑地址,能共享物理地址,而同一进程的线程之间可以

        共享部分逻辑地址,即:能共享堆内存,每个线程有自己的线程栈,寄存器,私有数据。

2)多线程的实现方式有:继承Runnable接口、继承Thread类、使用ExecutorService、Callable、Future实现有返回结果的多线程。

3)多线程时要处理线程同步问题,使用加锁的方式同时又要避免死锁的产生。


线程同步方式


互斥锁、读写锁、条件变量、信号量和令牌


线程同步加锁的方法


1)synchronized:修饰方法或修饰代码块


2)lock对象锁:lock()方法会对Lock实例对象进行加锁,因此所有对该对象调用lock()方法的线程都会被阻塞,直到该Lock对象的unlock()方法被调用。


wait与sleep区别


1)wait是Object类的方法,sleep是Thread类的方法

2)wait时必须有锁且放开,sleep时不一定有锁,有的话不放开

3)wait要靠别人叫醒或打断,sleep自己醒或被打断





版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java多线程、并发系列之 (synchronized)同步与加锁机制

SynchronizedJava中每个对象都有一个内置锁,当程序运行到非静态的synchronized同步方法上时,自动获得与正在执行代码类的当前实例(this实例)有关的锁。获得一个对象的锁也称为获...

【Java】 类锁与对象锁加锁 synchronized 小解

最近面试到一个对多线程处理的问题,原来只使用过synchronized的方法锁,对其他对象锁和类锁了解,但是没事还使用过。今天就测试了一下。 首先介绍一下基本东西,看截图: 从上图对对象锁和类锁...

java加锁与同步方法

记下来,很重要。 Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。      一、当两个并发线程访问同一个对象object中的这个...

【Java线程】锁机制:synchronized、Lock、Condition

Lock可以实现synchronized的相同功能,它能以更优雅的方式处理线程同步问题。 与互斥锁定相比,读-写锁定允许对共享数据进行更高级别的并发访问。虽然一次只有一个线程(writer 线程)可以...

java的锁机制

一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在java里边就是拿到某个同步对象的锁(一个对象只有一把锁); 如果这个时候同步对象的锁被其他线程拿走了,他(这个线...

Java第七课 Java的多线程程序进程和线程的概念,实现多线程的两种方式,线程同步的原理,线程的死锁,运用wait和notify来实现producer - consumer关系,线程终止的两种情况。

程序、进程和线程 1.程序是计算机指令的集合,它以文件的形式存储在磁盘上。 2.进程:是一个程序在其自身的地址空间中的一次执行活动。 3.进程是资源申请、调度和独立运行的单位,因此,它使...

IOS 多线程,线程同步的三种方式

一般情况下我们使用线程,在多个线程共同访问同一块资源。为保护线程资源的安全和线程访问的正确性。 在IOS中我们一般情况下使用以下三种线程同步代码方式: 第一种和第二种代码同步的使用方法,一般情况下我们...
  • gwjxl
  • gwjxl
  • 2015-05-04 22:30
  • 724

Java Notes: Java的多线程创建、sleep和wait的区别以及同步(sychonized)

理解Java多线程的关键是理解好job-worker模式。 job指的是具体一项工作的内容,譬如,搅拌水泥这件事情。可以找很多个worker来做。在Java当中,job就是runnable类,而t...

黑马程序员——Java多线程—线程同步—wait、notify、notifyAll

关于wait、notify、notifyAll如何使用不再说明
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)