关闭

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

标签: java多线程三种方式区别java多线程线程同步方式线程同步加锁的方法wait与sleep区别
982人阅读 评论(0) 收藏 举报
分类:

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自己醒或被打断





1
0
查看评论

Java 5个猴子分桃的问题

最近看到有这么一个题,    有一堆桃子 总数未知,有5个猴子。早晨有一个猴子来到桃子前平均分成5份但多出一个,就把多的一个吃了然后拿走了其中一份还剩四份。第二个猴子来了也将剩下的桃子分成5份同样多了一个把多的一个吃了然后拿走了其中一份还剩四份。第三个。。。。。。每个猴子都做同样...
  • agwan123
  • agwan123
  • 2016-11-08 11:22
  • 599

Java-猴子分桃(多线程)

猴子分桃:3只猴子抢着分100只桃子,每只抢到的猴子分去剩余桃子的一半。使用多线程模拟这一过程代码如下:package com.homework.lhh;public class Ex01 { public static void main(String[] args) { ...
  • blue_hh
  • blue_hh
  • 2017-08-14 22:45
  • 248

Java线程(八):锁对象Lock-同步问题更完美的处理方式

Lock是java.util.concurrent.locks包下的接口,Lock 实现提供了比使用synchronized 方法和语句可获得的更广泛的锁定操作,它能以更优雅的方式处理线程同步问题,我们拿Java线程(二)中的一个例子简单的实现一下和sychronized一样的效果,代码如下: p...
  • ghsau
  • ghsau
  • 2012-04-14 22:29
  • 100825

Java 多线程加锁的方式总结及对比

参考博文:http://www.cnblogs.com/handsomeye/p/5999362.html 一.Java多线程可以通过: 1. synchronized关键字 2. Java.util.concurrent包中的lock接口和ReentrantLock实现类 这两种方...
  • u010842515
  • u010842515
  • 2017-03-28 14:27
  • 4550

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

Lock可以实现synchronized的相同功能,它能以更优雅的方式处理线程同步问题。 与互斥锁定相比,读-写锁定允许对共享数据进行更高级别的并发访问。虽然一次只有一个线程(writer 线程)可以修改共享数据,但在许多情况下,任何数量的线程可以同时读取共享数据(reader 线程) Condi...
  • vking_wang
  • vking_wang
  • 2013-08-14 17:15
  • 77763

Java多线程简析——Synchronized(同步锁)、Lock以及线程池

Java多线程 Java中,可运行的程序都是有一个或多个进程组成。进程则是由多个线程组成的。 最简单的一个进程,会包括mian线程以及GC线程。 线程的状态 线程状态由以下一张网上图片来说明: 在图中,红框标识的部分方法,可以认为已过时,不再使用。 (1)wait、notify、notifyAl...
  • yangzhaomuma
  • yangzhaomuma
  • 2016-04-25 00:56
  • 17167

Java 多线程加锁

以前的同步操作 基本上都是用到 synchronised 关键字,类似代码如下:synchronised(obj){//dosomething...}来做到同步,在 JDK5.0  里面有这么一个对象,ReentrantLock,发觉她的加锁编程的方式非常的适合日常的加锁习惯,EG:pac...
  • changewang
  • changewang
  • 2006-09-28 21:07
  • 7664

java多线程以及资源加锁

今天做了阿里巴巴的笔试题,有一道题是这样的:有一个桶,这个桶里最多能放5个苹果,甲不断地往桶里扔苹果,而乙不断地往苹果里拿苹果,设计一个程序来模拟这个过程。      看到这个题目我的第一想法就是这是一个多线程的问题,有两个线程同时操作同一个资源,这时候就是java多线...
  • Eric_Yang_Yang
  • Eric_Yang_Yang
  • 2015-04-02 23:05
  • 1876

java线程同步原理、wait,notify的用法及与sleep的区别

一。 java线程同步原理 java会为每个object对象分配一个monitor,当某个对象的同步方法(synchronized methods )或同步快被多个线程调用时,该对象的monitor将负责处理这些访问的并发独占要求。 当一个线程调用一个对象的同步方法时,JVM会检查该对象的m...
  • fupacker
  • fupacker
  • 2013-09-24 20:19
  • 6687

线程同步常用方式与区别

在介绍线程同步/互斥之前,我们先要理解同步与互斥的概念,引用书上的解释来说明这2个概念: 1、线程(进程)同步的主要任务 在引入多线程后,由于线程执行的异步性,会给系统造成混乱,特别是在急用临界资源时,如多个线程急用同一台打印机,会使打印结果交织在一起,难于区分。当多个线程急用共享变量,表格,链...
  • drdairen
  • drdairen
  • 2017-06-20 14:02
  • 543
    个人资料
    • 访问:202397次
    • 积分:3171
    • 等级:
    • 排名:第12828名
    • 原创:118篇
    • 转载:53篇
    • 译文:2篇
    • 评论:11条
    最新评论