導航:首頁 > 編程語言 > java排隊實現

java排隊實現

發布時間:2023-02-24 04:11:48

java同一個客戶端同時多個請求實現排隊等候

用隊里吧。
建個隊列,每次來個請求就向隊列里塞。你如果知道生產者和消費者模式的話,就很好解決了。

Ⅱ java排隊

排序就排序唄。
數據量不大,排序花不了多少時間的。
其實既然你要求的「要求服務時間」是固定的,那麼優先順序就等於1+等待時間/要求服務時間。也就是優先順序和等待時間是線性關系。而且,剛服務的那人等待時間被清0了,一定是最小的,所以這樣:每處理一個業務,檢查他時間到沒,到了出隊列,沒到排隊尾,因為他的等待時間是0,必然最小,而剛才沒有做業務的,等待時間都同等增加的,所以他們的優先順序次序沒變,直接把下個拿過來辦就行了

Ⅲ Java中應用線程銀行排隊系統

//您可以使用重入鎖實現排隊。
packagecom.lw;

importjava.util.concurrent.locks.Lock;
importjava.util.concurrent.locks.ReentrantLock;

{

privateintnumber=0;//創建一個變數
privateLocklock=newReentrantLock();//創建重入鎖對象

@Override
publicvoidrun(){

lock.lock();//打開鎖
try{
for(inti=0;i<5;i++){
try{
Thread.sleep(100);//線程休眠0.1秒
}catch(InterruptedExceptione){
e.printStackTrace();
}
//輸出當前線程的名稱和number的值,每次循環之後number的值都會加一
System.out.println(Thread.currentThread().getName()+":"
+number++);
}
}finally{
lock.unlock();//釋放鎖
}
}

publicstaticvoidmain(String[]args){
ReentrantLockDemorun=newReentrantLockDemo();//獲得ReentrantLockDemo對象
Threadthread1=newThread(run);//創建線程1
Threadthread2=newThread(run);//創建線程2
thread1.start();//運行線程1
thread2.start();//運行線程2
}
}

Ⅳ java 排隊執行怎麼實現

用隊列即可實現先進先出,對應的實現:LinkedList,在分布式環境上,可以用消息隊列,如:rocketmq、kafka、activemq

Ⅳ 用java實現銀行排隊程序,要求模擬銀行的業務排隊系統,要有界面,實現完成的排隊和叫號

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class BankWaiting extends JFrame implements ActionListener {
int total = 0, now = 0;
boolean is1Ready = false, is2Ready = false, is3Ready = false;
int call1, call2, call3;
JFrame jf;
JLabel jr, jl, jl1, j2, jl2, j3, jl3;
JTextField jr4;
JButton jb, jb1, jb2, j1;
JButton workBut1, workBut2, workBut3;
JPanel jp, jp1, jp2;

public BankWaiting() {
setLayout(null);
jf = new JFrame("銀行叫號程序");// 窗體
jr = new JLabel("請**號到*號窗口辦理業務");
jr.setBounds(300, 10, 800, 50);
jr.setForeground(Color.red);
j1 = new JButton("取號");
j1.addActionListener(this);
jr4 = new JTextField("歡迎");
jr4.setEditable(false);
ButtonGroup bg = new ButtonGroup();
bg.add(j1);
jp = new JPanel();
jl = new JLabel("一號窗口");
jl1 = new JLabel("一號窗口,歡迎你!");
jb = new JButton("下一位");
workBut1 = new JButton("開始辦理");
workBut1.addActionListener(this);
jb.addActionListener(this);
jp.setBackground(Color.pink);
jp.setSize(200, 80);// 大小
jp.setLocation(20, 120); // 位置
jf.setLayout(null);
jp1 = new JPanel();
j2 = new JLabel("二號窗口");
jl2 = new JLabel("二號窗口,歡迎你!");
jb1 = new JButton("下一位");
workBut2 = new JButton("開始辦理");
jb1.addActionListener(this);
workBut2.addActionListener(this);
jp1.setBackground(Color.pink);
jp1.setSize(200, 80);// 大小
jp1.setLocation(250, 120); // 位置
jf.setLayout(null);
jp2 = new JPanel();
j3 = new JLabel("三號窗口");
jl3 = new JLabel("三號窗口,歡迎你!");
jb2 = new JButton("下一位");
workBut3 = new JButton("開始辦理");
workBut3.addActionListener(this);
jb2.addActionListener(this);
jp2.setBackground(Color.pink);
jp2.setSize(200, 80);// 大小
jp2.setLocation(500, 120); // 位置
jf.setLayout(null);
jf.add(jp);
jf.add(jp1);
jf.add(jp2);
jf.add(jr);
jp.add(jl);
jp.add(jl1);
jp.add(jb);
jp.add(workBut1);
jp1.add(j2);
jp1.add(jl2);
jp1.add(jb1);
jp1.add(workBut2);
jp2.add(j3);
jp2.add(jl3);
jp2.add(jb2);
jp2.add(workBut3);

jf.add(j1);
jf.add(jr4);
j1.setBounds(550, 300, 60, 30);
jr4.setBounds(300, 300, 200, 40);
jf.setSize(800, 600);
jf.setVisible(true);
jf.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}

public void actionPerformed(ActionEvent e) {
String s = "";
if (e.getSource() == j1) {
s = "第" + (++total) + "號,前面還有" + (total - now - 1) + "位顧客!";
jr4.setText(s);
}
if (e.getSource() == jb) {
if (this.hasCustomers()) {
s = "請" + (++now) + "號顧客到一號窗口辦理";
call1 = now;
jl1.setText(s);
jr.setText(s);
is1Ready = true;
} else {
s = "當前已經沒有顧客了";
jl1.setText(s);
is1Ready = false;
}

} else if (e.getSource() == jb1) {
if (this.hasCustomers()) {
s = "請" + (++now) + "號顧客到二號窗口辦理";
call2 = now;
jl2.setText(s);
jr.setText(s);
is2Ready = true;
} else {
s = "當前已經沒有顧客了";
jl2.setText(s);
is2Ready = false;
}
} else if (e.getSource() == jb2) {
if (this.hasCustomers()) {
s = "請" + (++now) + "號顧客到三號窗口辦理";
call3 = now;
jl3.setText(s);
jr.setText(s);
is3Ready = true;
} else {
s = "當前已經沒有顧客了";
jl3.setText(s);
is3Ready = false;
}
}
if (e.getSource() == workBut1) {
if (is1Ready) {
s = call1 + "號顧客正在辦理業務。。。";
jl1.setText(s);
is1Ready = false;
}

} else if (e.getSource() == workBut2) {
if (is2Ready) {
s = call2 + "號顧客正在辦理業務。。。";
jl2.setText(s);
is2Ready = false;
}

} else if (e.getSource() == workBut3) {
if (is3Ready) {
s = call3 + "號顧客正在辦理業務。。。";
jl3.setText(s);
is3Ready = false;
}
}
}

public boolean hasCustomers() {
if (now < total) {
return true;
} else {
return false;
}
}

public static void main(String[] args) {
new BankWaiting();
}
}

Ⅵ 用多線程實現銀行排隊功能java

package com.lw;

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class ReentrantLockDemo implements Runnable {

private int number = 0;// 創建一個變數
private Lock lock = new ReentrantLock();// 創建重入鎖對象

@Override
public void run() {

lock.lock();// 打開鎖
try {
for (int i = 0; i < 5; i++) {
try {
Thread.sleep(100);// 線程休眠0.1秒
} catch (InterruptedException e) {
e.printStackTrace();
}
// 輸出當前線程的名稱和number的值,每次循環之後number的值都會加一
System.out.println(Thread.currentThread().getName() + ": "
+ number++);
}
} finally {
lock.unlock();// 釋放鎖
}
}

public static void main(String[] args) {
ReentrantLockDemo run = new ReentrantLockDemo();// 獲得ReentrantLockDemo對象
Thread thread1 = new Thread(run);// 創建線程1
Thread thread2 = new Thread(run);// 創建線程2
thread1.start();// 運行線程1
thread2.start();// 運行線程2
}
}

閱讀全文

與java排隊實現相關的資料

熱點內容
桌面文件全部加密 瀏覽:401
6s怎麼外接u盤需要什麼app 瀏覽:131
linux查看文件許可權命令 瀏覽:685
安卓手游存檔怎麼用 瀏覽:761
linuxyum安裝ftp 瀏覽:690
村委會主任可以推行政命令嗎 瀏覽:102
電腦文件夾封面多張圖片 瀏覽:263
網吧總伺服器叫什麼 瀏覽:922
多個演算法解決同一個問題 瀏覽:455
小車解壓後我的購車發票呢 瀏覽:977
做app開發用什麼雲伺服器 瀏覽:177
linux網卡子介面 瀏覽:985
21歲職高畢業學程序員怎麼學 瀏覽:321
vs如何對單個文件編譯 瀏覽:6
為什麼有的電腦不能安裝python 瀏覽:75
金蝶迷你版加密狗檢測到過期 瀏覽:186
硬體描述語言編譯結果 瀏覽:655
程序員逆天改命 瀏覽:19
金斗雲伺服器 瀏覽:447
港口工程pdf 瀏覽:770