public class FirstThread {
static List<Object> goods = new ArrayList<>(); //儲存物品的倉庫,最多儲存1
public static void main(String[] args) throws InterruptedException {
Producer thread1 = new Producer();
Consumer thread2 = new Consumer();
Thread p1 = new Thread(thread1, "生產者1");
Thread p2 = new Thread(thread1, "生產者2");
Thread p3 = new Thread(thread1, "生產者3");
Thread c1 = new Thread(thread2, "消費者1");
Thread c2 = new Thread(thread2, "消費者2");
Thread c3 = new Thread(thread2, "消費者3");
class SaleThread2 implements Runnable {
int tickets = 10;
Object lock = new Object();
@Override
public void run() {
// TODO Auto-generated method stub
while(true) {
synchronized (lock) {
if(tickets>0) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"正在出售第"+tickets-- +"張票");
}
}
}
}
}
public class Example12 {
public static void main(String[] args) {
SaleThread2 st = new SaleThread2();
new Thread(st, "視窗1").start();
new Thread(st, "視窗2").start();
new Thread(st, "視窗3").start();
new Thread(st, "視窗4").start();
}
}
uj5u.com熱心網友回復:
第一段程式,num加入同步。
static class Producer implements Runnable {
volatile int num = 0;
@Override
public void run() {
// TODO Auto-generated method stub
while(true) {
synchronized (goods) {
if(goods.size()==0) {
goods.add("商品" + ++num);
System.out.println(Thread.currentThread().getName()+"生產了第"+num+"個產品");
}
else if(goods.size()>0)
try {
goods.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
static class Consumer implements Runnable {
volatile int num = 0;
@Override
public void run() {
// TODO Auto-generated method stub
眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......
值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......