1.模拟QQ相册上传图片(上传指定文件夹下所有的图片)
多线程上传(每个图片开辟一个子线程)
public class dome6 extends Thread {static class qqsc extends Thread {@Overridepublic void run() {System.out.println(this.getName() + "----->图片开始上传");for (int i = 1; i <= 5; i++) {System.out.println(this.getName() + "\t" + (i * 20 + "%"));try {qqsc.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}System.out.println(this.getName() + "----->图片上传完毕");}private void Sc() throws IOException {File file = new File("D:\\Test\\");//创建文件对象String s[] = file.list();for (int i = 0; i < s.length; i++) {System.out.println(s[i]);FileInputStream inputStream = new FileInputStream("D:\\Test\\" + s[i]); //图片文件FileOutputStream outputStream = new FileOutputStream("D:\\Test1\\" + s[i]);//新目录下int a = 0;while ((a = inputStream.read()) != -1) { //outputStream.write(a);//写入}outputStream.close();//g关闭资源inputStream.close();}public static void main(String[] args) throws IOException {qqsc s = new qqsc();qqsc s1 = new qqsc();s.Sc();s.start();s1.start();}}}}
测试结果如下:
也许这是伪代码凑合凑合看吧
2.火车卖票
Ticket类(车票)
private Integer ticketNum; //票号
private String trainNum; //车次
private String Origin; //始发地
private String destination; //目的地
package dome2;public class Ticket {private Integer ticketNum; //票号private String trainNum; //车次private String Origin; //始发地private String destination; //目的地public Ticket() {}@Overridepublic String toString() {return "Ticket{" +"ticketNum=" + ticketNum +", trainNum='" + trainNum + '\'' +", Origin='" + Origin + '\'' +", destination='" + destination + '\'' +'}';}public Ticket(Integer ticketNum, String trainNum, String origin, String destination) {this.ticketNum = ticketNum;this.trainNum = trainNum;Origin = origin;this.destination = destination;}public Integer getTicketNum() {return ticketNum;}public void setTicketNum(Integer ticketNum) {this.ticketNum = ticketNum;}public String getTrainNum() {return trainNum;}public void setTrainNum(String trainNum) {this.trainNum = trainNum;}public String getOrigin() {return Origin;}public void setOrigin(String origin) {Origin = origin;}public String getDestination() {return destination;}public void setDestination(String destination) {this.destination = destination;}}
Ticketer子线程类(售票员)
private List<Ticket> tickets; //票库(多个售票员同一个票库)
//卖票方法(从集合中删除一张票)
public void sellingTickets(){
从票库删除一张票
}
重写Thread线程类的run方法
实现多线程卖票,“卖完为止”
//如果剩余有票,则调用卖票方法
//否则,票已售完
package dome2;import java.util.List;public class Ticketer extends Thread{private List<Ticket> tickets;//票库(多个售票员同一个票库)private String name;public List<Ticket> getTickets() {return tickets;}public void setTickets(List<Ticket> tickets) {this.tickets = tickets;}public void run(){System.out.println(this.getName()+"开始卖票");for (int i = 1; i <=10; i++) {System.out.println(this.getName()+"卖出"+i);}}}
测试类中创建两个子线程进行卖票
public class Test {
public static void main(String[] args) {
//票库
List<Ticket> tickets = new ArrayList<>();
for (int i = 1; i <= 20 ; i++) {
Ticket ticket = new Ticket(i,"G","郑州","重庆");
tickets.add(ticket);
}
Ticketer t1 = new Ticketer();
t1.setName("小红");
Ticketer t2 = new Ticketer();
t2.setName("小丽");
//给两个售票员设置同一个票库
t1.setTickets(tickets);
t2.setTickets(tickets);
//开始子线程进行售票
t1.start();
t2.start();
}
}
测试类就是写好的