黑马程序员技术交流社区
标题:
run()方法中加入了synchronized关键字 现在都不明白了
[打印本页]
作者:
qq563426478
时间:
2015-3-1 11:01
标题:
run()方法中加入了synchronized关键字 现在都不明白了
本帖最后由 qq563426478 于 2015-3-1 11:08 编辑
class MyThread implements java.lang.Runnable
{
private int threadId;
public MyThread(int id)
{
this.threadId = id;
}
@Override
public synchronized void run()
{
for (int i = 0; i < 100; ++i)
{
System.out.println("Thread ID: " + this.threadId + " : " + i);
}
}
}
public class ThreadDemo
{
/**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException
{
for (int i = 0; i < 10; ++i)
{
new Thread(new MyThread(i)).start();
Thread.sleep(1);
}
}
}
作者:
wdhm5423
时间:
2015-3-1 14:18
多线程的运行出现安全问题的原因:当多条语句在操作同一线程共享数据时,一个线程对多条语句只执行了一部分,还没执行完,另一个线程参与进来执行。导致共享数据的错误。
解决办法:对多条操作共享数据的线程,只能让一个线程执行完。在执行过程中,其他线程不可以参与执行。
run()方法中加入了synchronized关键字,就是一次只能有一条线程执行该线程对象的run()方法。
当然对于没有共享数据的线程,无需synchronized关键字。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2