当前位置:首页 » 编程语言 » java多线程变量

java多线程变量

发布时间: 2024-06-28 13:28:38

java多线程 全局变量

你这个全局变量是static变量吗?必须是static才是全局的

然后要保证这个调用全局变量的类和那个线程是在同一个进程

然后要考虑执行的顺序,保证赋值的线程先执行

② java多线程共享变量

两个线程同时获取变量,
获取之后.第一个线程++操作,然后进入睡眠.
这时,第二个线程,也获取到了,做--操作.睡眠.
第一个线程醒来打印的是做过2次运算的数据(++,--)所以是0
第二线程也一样.
这涉及到多线程安全问题.

③ 基础Java题 试编写一个多线程的程序:启动4个线程。其中两个循环10次,每次将某全局变量加1,另两个循环1

publicclassDay18_A{
publicstaticvoidmain(String[]args)throwsInterruptedException{
Recounrec=Recoun.getRec();
Thread[]枯芦trr=newThread[4];
for(inti=0;i<4;i++){
trr[i]=newThread(newNumberTest(rec,i),"线程"+(i+1)+": ");
}
for(Threadthread:trr){
thread.start();
}
for(Threadthread:trr)没纯带{
thread.join();
}
System.out.println("所有线程结束裤亏查看结果:"+rec.getCount());
}
}

{
privateRecounre;
privateintn;
NumberTest(Recounr,inti){
this.re=r;
this.n=i;
}
publicvoidrun(){
for(inti=0;i<10;i++){
re.method(n);
}
}
}
classRecoun{
privateintcount=0;
privateRecoun(){
}
privatestaticfinalRecounrec=newRecoun();
publicstaticRecoungetRec(){
returnrec;
}
publicsynchronizedvoidmethod(inti){
if(i%2==0){
System.out.println(Thread.currentThread().getName()+(count++));
}else{
System.out.println(Thread.currentThread().getName()+(count--));
}
}
publicsynchronizedintgetCount(){
returncount;
}
}

④ Java两个线程操作一个变量,为什么变量的值会不一样呢

如楼下所说,线程同步的问题。
除了了使用synchronized。

还可以使用原子类型,例如AtomicInteger,参见

http://dlc.sun.com.edgesuite.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/html/zh_CN/api/index.html

⑤ java 多线程 同时操作一个变量 高分悬赏

ArrayList不是线程安全的野迟 所以 synchronized 必须有 这一点是关键,其他的都是浮云。还有 两个线程sleep一会更好 否则 这个猛喊跟死循环一样了 机器受不了啊!。
public class Test {

public static List<String> list = new ArrayList<String>();

public static void main(String[] args) {
myThreadClass1 thread1 = new myThreadClass1();
myThreadClass2 thread2 = new myThreadClass2();
Thread t1 = new Thread(thread1);
Thread t2 = new Thread(thread2);
t1.start();
t2.start();
}
}

class myThreadClass1 implements Runnable {
public void run() {
while (true) {//枝脊野 这就不要写1 ==1 了
synchronized (Test.class) {
System.out.println("add!!!!");
Test.list.add("123");
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

class myThreadClass2 implements Runnable {
public void run() {
while (true) {
synchronized (Test.class) {
Iterator it = Test.list.iterator();
// 循环里remove会出冲突异常的
List list2 = new ArrayList();
while (it.hasNext()) {
Object obj = it.next();
System.out.println("remove:" + obj);
list2.add(obj);
}
// you can do anything with list2
// avoid java.util.
Test.list.clear();
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

⑥ java多线程有几种实现方法,都是什么同步有几种实现方法,都是什么

java中多线程的实现方法有两种:1.直接继承thread类;2.实现runnable接口;同步的实现方法有五种:1.同步方法;2.同步代码块;3.使用特殊域变量(volatile)实现线程同步;4.使用重入锁实现线程同步;5.使用局部变量实现线程同步

其中多线程实现过程中需注意重写或者覆盖run()方法,而对于同步的实现方法中使用较常使用的是利用synchronized编写同步方法和代码块。

热点内容
奥视安摄像头无线网密码多少 发布:2024-06-30 23:19:04 浏览:46
win8的文件夹选项在哪 发布:2024-06-30 23:12:58 浏览:990
androidadtmac下载 发布:2024-06-30 23:08:09 浏览:152
qq空间访问量排行 发布:2024-06-30 23:03:06 浏览:593
皓影什么配置座椅通风 发布:2024-06-30 23:01:27 浏览:381
看手机解压 发布:2024-06-30 23:01:27 浏览:838
安卓手机的系统怎么升级 发布:2024-06-30 23:01:25 浏览:264
apktool回编译失败怎么回事 发布:2024-06-30 22:53:16 浏览:928
sql获取时间的日期 发布:2024-06-30 22:51:57 浏览:729
亚索编程的 发布:2024-06-30 22:35:35 浏览:880