今天收获:
1、java的多线程有两种创建方式:
两种线程的创建方式:继承Thread 和 接口Runnerble----------------(记得放入while(true)的循环中,否则只能执行一次)
2、坦克大战项目的多线程应用:
a、将子弹做成一个线程;
b、将panel画板也做成一个线程;
要运用到多线程技术的项目中,如果该类参数会随时间经常变化,可以做成多线程定时执行
3、多线程的互斥和同步
a、注意事项:一个线程类只能启动一次,即一个对象(线程)只能启动一次start
b、线程互斥问题(加对象锁)
Demo如下:
/* * 线程同步 */ package com.Thread; public class Demo10_5 { public static void main(String[] args) { // TODO Auto-generated method stub //创建售票窗口 TicketWindow tw1 = new TicketWindow(); Thread t1 = new Thread(tw1); Thread t2 = new Thread(tw1); Thread t3 = new Thread(tw1); t1.start(); t2.start(); t3.start(); } } //售票窗口 class TicketWindow implements Runnable { int nums = 100; @Override public void run() { // TODO Auto-generated method stub while (true) { //加互斥锁,同步 synchronized (this) { if (nums > 0) { try { Thread.sleep(100); } catch (Exception e) { // TODO: handle exception } //显示售票信息 System.out.println(Thread.currentThread().getName()+" 当前售出第 " + nums +" 张票"); //售票 nums--; } else { //售票结束 break; } } } } }