java生成隨機篩子
題目要求:
兩個執行緒,一個執行緒隨機生成篩子數,一個執行緒在控制檯中列印執行緒數,如果連續生成3個6,則兩個執行緒退出。
實現程式碼(一)
import java.util.LinkedList; import java.util.Random; import java.util.concurrent.atomic.AtomicInteger; public class DemoA { LinkedList<Integer> list = new LinkedList<>(); AtomicInteger count = new AtomicInteger(); class Thread1 implements Runnable { @Override public void run() { while (count.get() < 3) { synchronized (list) { if(list.size()>0){ try { list.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } Random random = new Random(); int i = random.nextInt(6) + 1; list.push(i); if(i==6){ int c=count.get()+1; count.set(c); }else { count.set(0); } } } } } class Thread2 implements Runnable { @Override public void run() { while (count.get() < 3) { synchronized (list) { if (list.size() > 0) { System.out.println(list.pop()); }else { list.notify(); } } } } } public void start() { Thread thr1 = new Thread(new Thread1()); thr1.start(); Thread thr2 = new Thread(new Thread2()); thr2.start(); } public static void main(String[] args) { DemoA demoA = new DemoA(); demoA.start(); } }
實現程式碼(二)
import java.util.Random; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.atomic.AtomicInteger; /** * 搖篩子,一個執行緒讀,一個執行緒在控制檯列印,如果連續出現3個6,則退出。 */ public class BlockQueueTest { public static void main(String[] args) { BlockQueueTest blockQueueTest=new BlockQueueTest(); blockQueueTest.start(); } private void start(){ Bus bus=new Bus(); new Thread(bus::send).start(); new Thread(bus::take).start(); } class Bus{ BlockingQueue<Integer> queue=new ArrayBlockingQueue<>(1); AtomicInteger integer=new AtomicInteger(); private void send(){ while (integer.get()<3){ Random random=new Random(); int i=random.nextInt(6)+1; try { queue.put(i); } catch (InterruptedException e) { e.printStackTrace(); } if(i==6){ int c=integer.get()+1; integer.set(c); }else { integer.set(0); } } } private void take(){ while (integer.get()<3||queue.size()!=0){ try { System.out.println(queue.take()); } catch (InterruptedException e) { e.printStackTrace(); } } } } }
相關推薦
java生成隨機篩子
題目要求: 兩個執行緒,一個執行緒隨機生成篩子數,一個執行緒在控制檯中列印執行緒數,如果連續生成3個6,則兩個執行緒退出。 實現程式碼(一) import java.util.LinkedList; import java.util.Random; import jav
java生成隨機漢字
base 標準 2個 throws eat 生成 == java開源類庫 stat 方法一: public static char getRandomChar() { return (char) (0x4e00 + (int) (Math.rando
Java生成隨機不反復推廣碼邀請碼
都是 主鍵 line googl popu net 可能 其它 數據 歡迎進入我的博客:blog.scarlettbai.com查看很多其它文章 近期接到一個需求。要批量生成推廣碼,首先我們知道推廣碼的特效有例如以下兩點: 1:不可反復 2
Java生成隨機字串和生成隨即類
有時候我們在測試的時候需要構建一些物件,每次測試都要構建很麻煩,所以我們可以構建一些類,並給類賦一些隨機值。 @Data @ToString class Person { private Integer id; private Integer age; pr
java生成隨機圖片
@RequestMapping(method = POST, value = "/getVerify", produces = JSON_UTF8, consumes = JSON_UTF8)public void getVerify(HttpServletRequest request, HttpServl
JAVA生成隨機驗證碼
一、生成隨機圖片的java工具類 package com.xh.commen; import java.awt.*; import java.awt.image.BufferedImage; public class ImageUtil { private
java生成隨機密碼(隨機長度,指定長度)方法總結
本文章給大家總結了在java中生成隨機密碼的幾種函式,一種是隨機長度密碼,另一種是使用者固定長度密碼,下面我來給各位介紹。 Java生成隨機長度密碼。 /** * 生成隨機密碼 * * @pa
java 生成隨機字符串
string abcdefg 生成隨機字符串 生成 stringbu buffer stat abc turn java中選擇相應的字段,生成固定長度的字符串 public static String getRandomString(int length) { // len
java生成隨機字串(A-Z0-9)
public static String getRandomChar(int length) { //生成隨機字串 char[] chr = {'0', '1
JAVA生成隨機ID(UUID)
生成隨機ID,經常在新增資料到資料庫中使用 public static String getUUID(){ UUID uuid=UUID.randomUUID();
java生成隨機驗證碼(ASCII)
最近做的一些東西,在做請求時,要偽造一些隨機碼,所以就寫了個方法,網上實現也比較多,這裡只是提供自己的這個相對來說比較簡單,主要是看實現思路,主要是利用java的 Random類 1. 只生成數字驗證碼 因為是用於驗證碼,所以首位為0也是可以的,單純的用random.nextIn
Java生成隨機驗證碼圖片並進行Base64編碼
import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints;
Java生成隨機字串,必須包含數字、小寫字母、大寫字母
轉載,來源:http://www.cnblogs.com/dongliyang/archive/2013/04/01/2994554.html 一道演算法題,生成隨機字串,必須包含數字、小寫字母、大寫字母。 為了生成隨機數方便,特別編寫StdRandom類(注1),AP
Java生成隨機整數
Java生成隨機整數 呼叫import java.util.Random;包 宣告和建立: Random rd1=new Random(); int a=rd1.nextInt(); 或者呼叫import java.lang.Math.*;包來產生一個0---3之間的dou
Java生成隨機字串的程式碼
public static String getRandomString(int length) { //length表示生成字串的長度 String base = "abcdefghijklmnopqrstuvwxyz0123456789"; Ran
java生成隨機數字和字母組合
public static String getCharAndNumr(int length) { String val = ""; Random random = new Random(); for (int i = 0; i < length
在java中隨機生成一個無序且長度不大於10的字符串
image ack con 技術 exti pen collect tint span package xiangmu; import java.util.ArrayList; import java.util.Collections; import java.ut
java如何隨機生成定長的字符串
時間 tle eof 長度 bcd pow val gnu 字符串 小數,字符串、時間等示例代碼 public class RandomTest { public static Random rand = new Random(); public stat
java 如何隨機生成(取出)一個數組中的一個數,並且一次取一個直到取
問題描述 我想得到的是特定數,可能不是連續的,而且 數是取出的。 程式碼 private static int[] randomCreate(int [] rands) { int[] outArr = new int[rands.length];//創造一個用於接收的陣列
Java 生成四位隨機驗證碼
驗證碼在平時用到的很多,簡單記錄一下生成四位隨機驗證碼的核心程式碼: 生成四位驗證碼(數字與字母混合) String str="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; StringBuilder sb=new StringBuilder(4);