您的位置:首页 > 编程语言 > Java开发

Java线程题

2015-10-17 16:25 447 查看
参考:Java初学者的博客,网址为:http://skyuck.iteye.com/blog/540660

参考:mars914的博客,网址:http://mars914.iteye.com/blog/1508429

设计4个线程,其中两个每次相加均增加1,另外2个线程每次减少1.

其中:new Thread(参数) ;//此参数需要为new Thread()或者继承了Runnable(因为Java为单继承,所以,有继承的类也可以实现Runnable接口(间接进行了继承))

package thread;

//设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。

public class ThreadTest {

private int j;

private synchronized void add(){

j++;

System.out.println(Thread.currentThread().getName()+" -add:"+j);

}

private synchronized void dec(){

j--;

System.out.println(Thread.currentThread().getName()+" -dec:"+j);

}



class Add implements Runnable{ //每次增加1

@Override

public void run() {

add();

}

}

class DEC implements Runnable{ //每次增加1

@Override

public void run() {

dec();

}

}

public static void main(String[] args){

ThreadTest tt=new ThreadTest();

Add add=tt.new Add();

DEC dec=tt.new DEC();

for(int i=0;i<2;i++){

Thread t=new Thread(add); //add实现了Runnable接口

t.start();

t=new Thread(dec);

t.start();

}

}

}

2 火车票的继承

synchronized(this){

。。。。

}

Thread的写法

package com.threadtest;

class MyThread extends Thread{



private int ticket = 10;

private String name;

public MyThread(String name){

this.name =name;

}



public void run(){

for(int i =0;i<500;i++){

if(this.ticket>0){

System.out.println(this.name+"卖票---->"+(this.ticket--));

}

}

}

}

public class ThreadDemo {



public static void main(String[] args) {

MyThread mt1= new MyThread("一号窗口");

MyThread mt2= new MyThread("二号窗口");

MyThread mt3= new MyThread("三号窗口");

mt1.start();

mt2.start();

mt3.start();

}

}

效果:

一号窗口卖票---->10

一号窗口卖票---->9

二号窗口卖票---->10

一号窗口卖票---->8

一号窗口卖票---->7

一号窗口卖票---->6

三号窗口卖票---->10

一号窗口卖票---->5

一号窗口卖票---->4

一号窗口卖票---->3

一号窗口卖票---->2

一号窗口卖票---->1

二号窗口卖票---->9

二号窗口卖票---->8

三号窗口卖票---->9

三号窗口卖票---->8

三号窗口卖票---->7

三号窗口卖票---->6

三号窗口卖票---->5

三号窗口卖票---->4

三号窗口卖票---->3

三号窗口卖票---->2

三号窗口卖票---->1

二号窗口卖票---->7

二号窗口卖票---->6

二号窗口卖票---->5

二号窗口卖票---->4

二号窗口卖票---->3

二号窗口卖票---->2

二号窗口卖票---->1

Runnable的写法:

package com.threadtest;

class MyThread1 implements Runnable{

private int ticket =10;

private String name;

public void run(){

for(int i =0;i<500;i++){

if(this.ticket>0){

System.out.println(Thread.currentThread().getName()+"卖票---->"+(this.ticket--));

}

}

}

}

public class RunnableDemo {



public static void main(String[] args) {

// TODO Auto-generated method stub

//设计三个线程

MyThread1 mt = new MyThread1();

Thread t1 = new Thread(mt,"一号窗口");

Thread t2 = new Thread(mt,"二号窗口");

Thread t3 = new Thread(mt,"三号窗口");

// MyThread1 mt2 = new MyThread1();

// MyThread1 mt3 = new MyThread1();

t1.start();

t2.start();

t3.start();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: