java多线程案例

来源:互联网 发布:mac os怎么分区 编辑:程序博客网 时间:2024/06/06 02:45

java笔试题:用JAVA写一个多线程程序,如写四个线程,二个加1,二个对一个变量减一,输出。

我写了如下程序,感觉是对的,欢迎指正!

package thread2;public class Mythread implements Runnable{private int temp =100;@Overridepublic void run() {if(Thread.currentThread().getName().equals("Thread-2")||Thread.currentThread().getName().equals("Thread-3")){jiajia();}else if(Thread.currentThread().getName().equals("Thread-0")||Thread.currentThread().getName().equals("Thread-1")){jianjian();}}public synchronized void jiajia(){temp++;try {Thread.sleep(1000);System.out.println(Thread.currentThread().getName()+" temp 被加上1,现在temp="+temp);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}} public synchronized void jianjian(){temp--;try {Thread.sleep(1000);System.out.println(Thread.currentThread().getName()+" temp 被减去1,现在temp="+temp);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

package thread2;public class ThreadTest {public static void main(String[] args) {Mythread mythread = new Mythread();new Thread(mythread).start();new Thread(mythread).start();new Thread(mythread).start();new Thread(mythread).start();}}

输出结果:

Thread-0 temp 被减去1,现在temp=99
Thread-3 temp 被加上1,现在temp=100
Thread-2 temp 被加上1,现在temp=101
Thread-1 temp 被减去1,现在temp=100


我看了一些相关的例子,总结了一下:

①一个主类A,有主函数,
②一个基础类B,基础类中有用synchronized修饰的方法
③一个实现了Runnable接口的线程类C,其中②中的基础类B是③中 类的成员变量,线程类的run方法中对基础类B进行并发访问


注:对于第③点,本例中的基础类就是成员变量temp,在网上有很多其他的例子差不多都是按照这个步骤来的。



原创粉丝点击