java线程实现排序_【多线程实现快速排序】
快速排序算法实现文件QuickSort.java
package quick.sort;
import java.util.concurrent.Callable;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class QuickSort implements Callable{
private int[] array;
private final int start;
private final int end;
private int middle;
Lock lock = new ReentrantLock();
public QuickSort(int start,int end,int[] array){
this.start = start;
this.end = end;
this.array = array;
}
@Override
public Point call() {
/*进行排序*/
quickSort();
return new Point(start,end,middle);
}
public void quickSort(){
int head,tail;
head = start;
tail = end + 1;
while(true){
/*找到一个比head大的*/
do{
head++;
}while(!(array[head] >= array[start] || head == end));
/*找到一个比head小的*/
do{
tail--;
}while(!(array[start] >= array[tail] || tail == start));
if(head < tail)
swap(head,tail);
else
break;
}
swap(start,tail);
middle = tail;
}
public void swap(int a,int b){
int temp = 0;
temp = array[a];
array[a] = array[b];
array[b] = temp;
}
}
class Point{
private int start;
private int end;
private int middle;
public Point(int start,int end,int middle){
this.start = start;
this.end = end;
this.middle = middle;
}
public int getStart(){
return start;
}
public int getEnd(){
return end;
}
public int getMiddle(){
return middle;
}
public boolean compareStartMiddle(){
return start < middle - 1;
}
public boolean compareMiddleEnd(){
return middle + 1 < end;
}
}
java线程实现排序_【多线程实现快速排序】相关推荐
- java线程条件变量_多线程同步条件变量(转载)
最近看<UNIX环境高级编程>多线程同步,看到他举例说条件变量pthread_cond_t怎么用,愣是没有看懂,只好在网上找了份代码,跑了跑,才弄明白 #include #include ...
- java线程锁机制_多线程之锁机制
前言 在Java并发编程实战,会经常遇到多个线程访问同一个资源的情况,这个时候就需要维护数据的一致性,否则会出现各种数据错误,其中一种同步方式就是利用Synchronized关键字执行锁机制,锁机制是 ...
- java 线程 单例_多线程单例模式
多线程单例模式 原文:https://blog.csdn.net/u011726005/article/details/82356538 1. 饿汉模式 使用饿汉模式实现单例是十分简单的,并且有效避免 ...
- java线程顺序输出_多线程按顺序输出ABC
/** * @author mengwen E-mail: meng_wen@126.com * @date 创建时间:2016年8月30日 下午3:10:32 * @version 1.0 * @p ...
- java线程知乎_全网独家!知乎20K点赞的Java并发多线程笔记,简直堪称神仙级文档...
有很多小伙伴都问过我,头条号里的关于java多线程的文章有pdf版本吗?我其实很想弄pdf,但是前段时间一直没时间去折腾,我把每个Java并发编程核心技术的都整理成了一个又一个的文档.昨天也是终于全部 ...
- java 线程的理解_浅谈对多线程的理解(一)
今天我们先来聊聊有关线程的话题...... 一. 线程概述 1. 简单区分程序.进程和线程 程序是指一段静态的代码 进程是指正在执行的程序,将静态的代码运行起来 线程是指正在执行程序的小单元 举个栗子 ...
- java 线程组作用_浅析Java中线程组(ThreadGroup类)
一.概念 Java中使用ThreadGroup类来代表线程组,表示一组线程的集合,可以对一批线程和线程组进行管理.可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线 ...
- java 线程面试题_JAVA多线程面试题(一)
1.进程和线程的区别 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运行环境是一个包含了不同的类和程序的单一进 ...
- java线程代码实现_Java 多线程代码实现讲解
作为一个完全面向对象的语言,Java提供了类 java.lang.Thread 来方便多线程编程,这个类提供了大量的方法来方便我们控制自己的各个线程.那么如何提供给 Java 我们要线程执行的代码呢? ...
最新文章
- linux如何连接移动硬盘
- 02.iOS开发网络篇—HTTP协议
- Oracle入门(十三C)之高级查询(下)
- matlab 无向拓扑图,无向图绘画树状拓扑图算法
- VM克隆之后启动eth0找不到eth0:unknown interface:no such device
- Python编程高手之路——第三章:数据类型
- Casper 机制的历史起源:第一篇
- iptables防火墙基础
- angularjs 循环完之后执行的事件
- CF724G. Xor-matic Number of the Graph
- 【COCA】美国当代语料库常用高频词汇20200个(可直接复制)
- php 上传乱码_php上传文件名乱码了怎么办
- cnpm 安装yarn
- 「缠师课后回复精选」第15课:没有趋势,没有背驰。
- 电子科技大学计算机系王教授,王书振 | 个人信息 | 西安电子科技大学个人主页...
- .net 生成拼音码与五笔码
- 网络通信安全部分笔记二
- Failed to compile编译失败
- 据说是原CSDN排名第一的博客,我看到内容,确实被震憾了
- [转]Win10 莫名卡顿问题解决(1903-1909版本)
热门文章
- 荣耀v40可以升级华为鸿蒙,网传荣耀V40机型也能升级鸿蒙OS 首批更新机型有望是这5款...
- vue数组变化视图_vue对象数组数据变化,页面不渲染
- cefsharp 发送请求服务器_超高性能管线式HTTP请求(实践·原理·实现)
- vue点击弹窗自动触发点击事件的解决办法
- mysql二进制大文件_Mysql实例Mysql LONGTEXT 类型存储大文件(二进制也可以) (修改+调试+整理)...
- linux 更改父进程名称,[Linux进程]在父进程和子进程中分别修改变量
- Edge浏览器开发人员工具
- Raect Router 4 的使用 (1)
- 深入理解line-height与vertical-align——前端布局常用属性
- 正则表达式及测试工具