多线程:
1.多线程的实现方式1:
实现Runnable接口
class A implements Runnable{
int ticket=100;
@Override
public void run() {
while(true)
{
if(ticket>0)
{
System.out.println(Thread.currentThread().getName()+"售票票号为:"+ticket);
ticket--;
}
}
}
}
public class Main {
public static void main(String[] args) {
A p=new A();
Thread t1=new Thread(p);
Thread t2=new Thread(p);
Thread t3=new Thread(p);
t1.setName("窗口1");
t2.setName("窗口2");
t3.setName("窗口3");
t1.start();
t2.start();
t3.start();
}
}
.多线程的实现方式2:
继承Thread类
class A extends Thread{
static int ticket=100;
@Override
public void run() {
while(true)
{
if(ticket>0)
{
System.out.println(Thread.currentThread().getName()+"售票票号为:"+ticket);
ticket--;
}
}
}
}
public class Main {
public static void main(String[] args) {
A t1=new A();
A t2=new A();
A t3=new A();
t1.setName("窗口1");
t2.setName("窗口2");
t3.setName("窗口3");
t1.start();
t2.start();
t3.start();
}
}
同步代码块的实现:
Thread类:
class A extends Thread{
static int ticket=100;
@Override
public void run() {
while(true)
synchronized (A.class) {
{
if(ticket>0)
{
System.out.println(Thread.currentThread().getName()+"售票票号为:"+ticket);
ticket--;
}
}
}
}
}
public class Main {
public static void main(String[] args) {
A t1=new A();
A t2=new A();
A t3=new A();
t1.setName("窗口1");
t2.setName("窗口2");
t3.setName("窗口3");
t1.start();
t2.start();
t3.start();
}
}
Runnable接口:
class A implements Runnable{
int ticket=100;
@Override
public void run() {
while(true)
synchronized (this) {
{
if(ticket>0)
{
System.out.println(Thread.currentThread().getName()+"售票票号为:"+ticket);
ticket--;
}
}
}
}
}
public class Main {
public static void main(String[] args) {
A p=new A();
Thread t1=new Thread(p);
Thread t2=new Thread(p);
Thread t3=new Thread(p);
t1.setName("窗口1");
t2.setName("窗口2");
t3.setName("窗口3");
t1.start();
t2.start();
t3.start();
}
}
同步方法的实现:
class A implements Runnable {
int ticket = 100;
@Override
public void run() {
while (true) {
show();
}
}
public synchronized void show(){
if (ticket > 0) {
System.out.println(Thread.currentThread().getName() + "售票票号为:" + ticket);
ticket--;
}
}
}
public class Main {
public static void main(String[] args) {
A p=new A();
Thread t1=new Thread(p);
Thread t2=new Thread(p);
Thread t3=new Thread(p);
t1.setName("窗口1");
t2.setName("窗口2");
t3.setName("窗口3");
t1.start();
t2.start();
t3.start();
}
}